mysql索引的使用

添加索引:
添加主键索引:一张表把某个列设为主键的时候.则该列是主键索引;
alter table 表名 add primary key (列名);
普通索引:先建表在创建索引;
create index 索引名 on 表(列);
创建全文索引:alter table tablename add fulltext(column1,column2) ;全文索引只对myisam表起作用,只对英文有效;
正确使用全文索引:select * from articles where match(title,body) against ("database");
删除索引:alter table 表名 drop index 索引名;
如果删除主键索引:alter table 表名 drop primary key;
查询索引:
desc表明[该方法的缺点是不能够显示索引的名字];
show index(es) from 表名 \G;
show keys from 表名 \G;

查看索引  show index from 数据库表名
alter table 数据库add index 索引名称(数据库字段名称)
PRIMARY KEY(主键索引)
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
UNIQUE(唯一索引)
ALTER TABLE `table_name` ADD UNIQUE (`column`)
INDEX(普通索引)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
FULLTEXT(全文索引)
ALTER TABLE `table_name` ADD FULLTEXT ( `column` )
多列索引
ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
1.普通索引。
这是最基本的索引,它没有任何限制。它有以下几种创建方式:
(1)创建索引:CREATE INDEX indexName ON tableName(tableColumns(length));如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是 BLOB 和 TEXT 类型,必须指定length,下同。
(2)修改表结构:ALTER tableName ADD INDEX [indexName] ON (tableColumns(length))
(3)创建表的时候直接指定:CREATE TABLE tableName ( [...], INDEX [indexName] (tableColumns(length)) ;
2.唯一索引。
它与前面的"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
(1)创建索引:CREATE UNIQUE INDEX indexName ON tableName(tableColumns(length))
(2)修改表结构:ALTER tableName ADD UNIQUE [indexName] ON (tableColumns(length))
(3)创建表的时候直接指定:CREATE TABLE tableName ( [...], UNIQUE [indexName] (tableColumns(length));
3.主键索引
它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引:CREATE TABLE testIndex(i_testID INT NOT NULL AUTO_INCREMENT,vc_Name VARCHAR(16) NOT NULL,PRIMARY KEY(i_testID)); 当然也可以用ALTER命令。

注:那些列上适合添加索引(有利于查询的速度加快,但是增加了增删改的压力):
频繁作为查询条件字段应该创建索引;
唯一性太差的字段不适合单独创建索引;
更新太频繁的字段不适合创建索引;

复合索引中必须先使用左边的才能使用右边的;
模糊查询中如果百分号加在前面则不会用到索引;
使用or条件查询的时候两条件的字段都要建立索引,否则索引失去作用;
如果字段类型是字符串的时候则一定要用引号括起来,否则无法用到索引;
查询索引的使用情况 show status like 'handler_read%';

posted @ 2014-02-20 15:45  念雷星  阅读(146)  评论(0编辑  收藏  举报