当前位置: 首页 » MYSLQ » MYSQL索引

MYSQL索引

1.主键索引(三叉树算法 BTREE):当一张表,把某一个列设为主键的时候,则该列就是主键索引

如果你创建表时,没有指定主键索引,也可以在创建表后,再添加、删除。

添加主键:Alter table 表名 add primary key(列名)
删除主键:Alter table 表名 drop primary key(列名)
2.普通索引
一般来说,普通索引的创建,是先创建表,然后在创建普通索引
创建索引 create index 索引名 on 表(列)
删除索引:drop index 索引名 on 表
3.全文索引
全文索引,主要是针对文件,文本的检索,比如文章,全文检索。针对MyIASM有用。
select * from 表名 where match(列名,列名) against(‘内容’)
说明:
1.在mysql中fulltext索引值只针对MyIASM生效
2.针对英文   spinx(适合中文)
3.match(字段名)  against(关键字)
4.唯一索引  某列为unique约束时,这列就是唯一索引
创建索引 create unsigne 索引名 on 表(列)
删除索引:drop unsigne 索引名 on 表
查询索引
desc 表名 ==>缺点:不能够现实索引名
show  index from  表名 \G
show keys  from 表名 \G
索引的代价
磁盘的占用
对dml(update、insert、delete)语句的效率影响
在那些列上适合添加索引
1.肯定在where经常使用
2.该字段的内容不是唯一的几个值
3.字段内容不是频繁变化
使用索引注意事项:
1.对应创建的多列索引,只要查询条件使用了最左边的列,所以一般全使用。右边的不会使用索引
2.使用like的查询,前面使用% 索引失效,后面可以使用索引,除非使用全文索引
3.如果条件中or,即使有条件索引也不会使用,要求所有的条件字段都带索引,尽量少用or关键字
4.如果是字符串类型,必须用引号包含
5.全表扫描比索引快,就用全表扫描
如何查看索引使用的情况
show status like “handler_read%”
Handler_read_key这个值越高,索引使用率越高
SQL小技巧
1.在使用groupb by分组查询时,默认分组还会排序,可能降低速度 =>增加一个 order by null
2.有些情况下,可以使用连接代替子查询,因为用join,mysql不需要再内存中创建临时表

请尊重我们的辛苦付出,未经允许,请不要转载 本站 的文章,鄙视各种无耻的采集行为!
Tagged on:

发表评论