网站收录低的原因河南建设银行招聘网站
创建索引
CREATE INDEX index_name
ON table_name (column1 [ASC|DESC], column2 [ASC|DESC], ...);
 
- CREATE INDEX: 用于创建普通索引的关键字。
 - index_name: 指定要创建的索引的名称。索引名称在表中必须是唯一的。
 - table_name: 指定要在哪个表上创建索引。
 - (column1, column2, …): 指定要索引的表列名。你可以指定一个或多个列作为索引的组合。这些列的数据类型通常是数值、文本或日期。
 - ASC和DESC(可选): 用于指定索引的排序顺序。默认情况下,索引以升序(ASC)排序。
 
创建索引的条件
-  
查询频繁的字段应该作为索引。索引的目的就是提高检索效率,如果某个字段被频繁使用,使用字段作为检索条件时就有必要提高检索效率。
 -  
更新频繁的字段不适合作为索引。索引的高效是以增删改的效率为代价的。
 -  
不作为检索条件的,不适合作为索引。如果该字段都不会作为条件用于检索,只会出现在结果中,那该字段不适合作为索引。
 
主键索引
在创建的时候直接指定
create table user(id int primary key,    name varchar(30)
);
//或者
create table user(id int,name varchar(30),primary key(id)       
);
 
在已有的表添加索引
ALTER TABLE `table_name` ADD PRIMARY KEY index_name  ( `column`  [ASC|DESC]);//例如:
create table user(id int,name varchar(30)
);
alter table user3 add primary key(id);    -- 创建表以后再添加主键
 
- ALTER TABLE: 用于修改表结构的关键字。
 - table_name: 指定要修改的表的名称。
 - ADD PRIMARY KEY: 添加索引的子句。ADD PRIMARY KEY用于创建普通索引。
 - index_name: 指定要创建的索引的名称。索引名称在表中必须是唯一的。
 - column1: 指定要索引的表列名。唯一的,列的数据类型通常是数值、文本或日期。
 - ASC和DESC(可选): 用于指定索引的排序顺序。默认情况下,索引以升序(ASC)排序。
 
删除索引
如果一个主键是自增长的,不能直接删除该列的主键索引,应当先取消自增长,再删除主键特性
alter table 表名 drop primary key; 
//例如:
alter table user modify id int ;【重新定义列类型】alter table user drop primary key; 
普通索引
在已有的表添加索引
ALTER TABLE table_name
ADD INDEX index_name (column1 [ASC|DESC], column2 [ASC|DESC], ...);
 
- ALTER TABLE: 用于修改表结构的关键字。
 - table_name: 指定要修改的表的名称。
 - ADD INDEX: 添加索引的子句。ADD INDEX用于创建普通索引。
 - index_name: 指定要创建的索引的名称。索引名称在表中必须是唯一的。
 - (column1, column2, …): 指定要索引的表列名。你可以指定一个或多个列作为索引的组合。这些列的数据类型通常是数值、文本或日期。
 - ASC和DESC(可选): 用于指定索引的排序顺序。默认情况下,索引以升序(ASC)排序。
 
在创建表的时候添加索引
CREATE TABLE table_name (column1 data_type,column2 data_type,...,INDEX index_name (column1 [ASC|DESC], column2 [ASC|DESC], ...)
);
 
- CREATE TABLE: 用于创建新表的关键字。
 - table_name: 指定要创建的表的名称。
 - (column1, column2, …): 定义表的列名和数据类型。你可以指定一个或多个列作为索引的组合。这些列的数据类型通常是数值、文本或日期。
 - INDEX: 用于创建普通索引的关键字。
 - index_name: 指定要创建的索引的名称。索引名称在表中必须是唯一的。
 - (column1, column2, …): 指定要索引的表列名。你可以指定一个或多个列作为索引的组合。这些列的数据类型通常是数值、文本或日期。
 - ASC和DESC(可选): 用于指定索引的排序顺序。默认情况下,索引以升序(ASC)排序。
 
删除索引
DROP INDEX
 
DROP INDEX index_name ON table_name;
 
- DROP INDEX: 用于删除索引的关键字。
 - index_name: 指定要删除的索引的名称。
 - ON table_name: 指定要在哪个表上删除索引。
 
ALTER TABLE 
 
ALTER TABLE table_name
DROP INDEX index_name;
 
- ALTER TABLE: 用于修改表结构的关键字。
 - table_name: 指定要修改的表的名称。
 - DROP INDEX: 用于删除索引的子句。
 - index_name: 指定要删除的索引的名称。
 
唯一索引
创建索引CREATE UNIQUE INDEX
 
CREATE UNIQUE INDEX index_name
ON table_name (column1 [ASC|DESC], column2 [ASC|DESC], ...);
 
- CREATE UNIQUE INDEX: 用于创建唯一索引的关键字组合。
 - index_name: 指定要创建的唯一索引的名称。索引名称在表中必须是唯一的。
 - table_name: 指定要在哪个表上创建唯一索引。
 - (column1, column2, …): 指定要索引的表列名。你可以指定一个或多个列作为索引的组合。这些列的数据类型通常是数值、文本或日期。
 - ASC和DESC(可选): 用于指定索引的排序顺序。默认情况下,索引以升序(ASC)排序。
 
在已有的表上创建索引 ALTER TABLE
 
ALTER table mytable 
ADD CONSTRAINT unique_constraint_name UNIQUE (column1, column2, ...);
 
- ALTER TABLE: 用于修改表结构的关键字。
 - table_name: 指定要修改的表的名称。
 - ADD CONSTRAINT: 这是用于添加约束(包括唯一索引)的关键字。
 - unique_constraint_name : 指定要创建的唯一索引的名称,约束名称在表中必须是唯一的。
 - UNIQUE (column1, column2, …): 指定要索引的表列名。你可以指定一个或多个列作为索引的组合。这些列的数据类型通常是数值、文本或日期。
 
创建表的时候直接指定
CREATE TABLE table_name (column1 data_type,column2 data_type,...,CONSTRAINT index_name UNIQUE (column1 [ASC|DESC], column2 [ASC|DESC], ...)
);
 
- CREATE TABLE: 用于创建新表的关键字。
 - table_name: 指定要创建的表的名称。
 - (column1, column2, …): 定义表的列名和数据类型。你可以指定一个或多个列作为索引的组合。这些列的数据类型通常是数值、文本或日期。
 - CONSTRAINT: 用于添加约束的关键字。
 - index_name: 指定要创建的唯一索引的名称。约束名称在表中必须是唯一的。
 - UNIQUE (column1, column2, …): 指定要索引的表列名。
 
显示索引信息
SHOW INDEX FROM table_name\G
注意
- 不是加了索引就会使用到,如果mysql发现通过索引查找的效率和整表查找差不多,mysql会自动优化为整表索引,因为使用索引要先读索引文件还需要扫码索引树。
 - 如果索引字段涉及到类型强转或者mysql函数调用以及表达式计算等,就不能使用到索引了。
 - 对于字符串类型来说,通常取前几个字符来区分字符串就足够了,否则过长的字符串索引会导致索引文件也过长,磁盘I/O也使用过多。
 
