
[UNIQUE|FULLTEXT|SPATIAL]
INDEX
index_name[USING
index_type]ON
tbl_name
(index_col_name,...)index_col_name:col_name[(length)]
[ASC
|
DESC]如果你经常要用到多个字段的多条件查询,可以考虑建立联合索引,一般是除第一个字段外的其它字段不经常用于条件筛选情况,比如说a,b
两个字段,如果你经常用a条件或者a+b条件去查询,而很少单独用b条件查询,那么可以建立a,b的联合索引。
索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索包含多个列。MySQL索引类型包括:
(1)普通索引
这是最基本的索引,它没有任何限制。它有以下几种创建方式:
◆创建索引
CREATE
INDEX
indexName
ON
mytable(username(length))
如果是
CHAR,VARCHAR类型,length可以小于字段实际长度如果是BLOB和TEXT类型,必须指定
length,下同。
◆修改表结构
ALTER
mytable
ADD
INDEX
[indexName]
ON
(username(length))
◆
创建表的时候直接指定
CREATE
TABLE
mytable(
ID
INT
NOT
NULL,
username
VARCHAR(16)
NOT
NULL,
INDEX
[indexName]
(username(length))
)
删除索引的语法:
DROP
INDEX
[indexName]
ON
mytable
(2)唯一索引
它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
◆创建索引
CREATE
UNIQUE
INDEX
indexName
ON
mytable(username(length))
◆修改表结构
ALTER
mytable
ADD
UNIQUE
[indexName]
ON
(username(length))
◆创建表的时候直接指定
CREATE
TABLE
mytable(
ID
INT
NOT
NULL,
username
VARCHAR(16)
NOT
NULL,
UNIQUE
[indexName]
(username(length))
)
(3)主键索引
它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引:
CREATE
TABLE
mytable(
ID
INT
NOT
NULL,
username
VARCHAR(16)
NOT
NULL,
PRIMARY
KEY(ID)
)
当然也可以用
ALTER
命令。记住:一个表只能有一个主键。
(4)组合索引
为了形象地对比单列索引和组合索引,为表添加多个字段:
CREATE
TABLE
mytable(
ID
INT
NOT
NULL,
username
VARCHAR(16)
NOT
NULL,
city
VARCHAR(50)
NOT
NULL,
age
INT
NOT
NULL
)
1.添加PRIMARY KEY(主键索引)mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
2.添加UNIQUE(唯一索引)
mysql>ALTER TABLE `table_name` ADD UNIQUE (
`column`
)
3.添加INDEX(普通索引)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
4.添加FULLTEXT(全文索引)
mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column`)
5.添加多列索引
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)