标签:order by sel xxx text 覆盖 har 方式 表数 需要
为什么要建立索引:
索引用于快速找出在某个列中有一特定值的行。不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行,还需要考虑每次读入数据页的IO开销。而如果采取索引,则可以根据索引指向的页以及记录在页中的位置,迅速地读取目标页进而获取目标记录。
使用索引需要注意:
⑴只对WHERE和ORDER BY需要查询的字段设置索引,避免无意义的硬盘开销;
⑵组合索引支持前缀索引;
⑶更新表的时候,如增删记录,MySQL会自动更新索引,保持树的平衡;因此更多的索引意味着更多的维护成本
索引的字段类型问题
索引分四类:
index ----普通的索引,数据可以重复
fulltext----全文索引,用来对大表的文本域(char,varchar,text)进行索引。语法和普通索引一样。
unique ----唯一索引,唯一索引,要求所有记录都唯一
primary key ----主键索引,也就是在唯一索引的基础上相应的列必须为主键
like 不能用索引?
想象一下,你在看一本成语词典,目录是按成语拼音顺序建立,查询需求是,你想找以 “一”字开头的成语(”一%“),和你想找包含一字的成语(“%一%”)
<,<=,=,>,>=,BETWEEN,IN
<>,not in ,!=则不行
原则
ps:数据量特别大的时候,最好不要用联合查询,即使你做了索引(??)
索引包含了所需的全部值的话,就只select 他们,换言之,只select 需要用到的字段,如无必要,可尽量避免select *
NULL会导致索引形同虚设,所以在设计表结构时应避免NULL 的存在(用其他方式表达你想表达的NULL,比如 -1?)
show index from tablename;
explain select ……;
标签:order by sel xxx text 覆盖 har 方式 表数 需要
原文地址:http://www.cnblogs.com/luohero/p/7390845.html