Maison >développement back-end >tutoriel php >mysql索引名称如何使用,在什么时候使用
建立索引很简单,请问这个索引名称cid在我书写mysql语句的什么时候会用到?
还是这个cid只是在mysql内部处理索引的时候使用,我书写语句的时候不会用到?
一般就这样建立索引就完毕了吗,mysql内部会处理关于索引的一切?还需要我自己书写什么语句不?
建立索引很简单,请问这个索引名称cid在我书写mysql语句的什么时候会用到?
还是这个cid只是在mysql内部处理索引的时候使用,我书写语句的时候不会用到?
一般就这样建立索引就完毕了吗,mysql内部会处理关于索引的一切?还需要我自己书写什么语句不?
如果你关心某条SQL查询是否用了索引, 可以用EXPLAIN SELECT * FROM xxx WHERE yyy
看一下查询计划, 它会告诉你用了什么索引, 这里你就会看到你的索引名了
还有一个场合你会用到索引名, 就是如果你希望强制使用某个索引来查询, 你可以用SELECT * FROM xxx FORCE INDEX yyy WHERE zzz
, 相反如果希望强制忽略某个索引, 可以用SELECT * FROM xxx IGNORE INDEX yyy WHERE zzz
起区分作用起区分作用起区分作用
首先得了解索引到底是什么,为什么索引能够加快查询,索引就是讲数据按照一定的排序规则讲数据按照索引给定的规则码放数据,譬如一个联合索性index(a,b,c),他将数据先按照 a b c码放,当一个查询语录比如select * from tb1 where a=1 and b=2 order by c这样的话mysql会先利用a字段迅速定位到磁盘上的数据,这时候b的数据又是按照a的规则有序码放,所以也能迅速定位数据范围,最后c字段也是有序的,所以该索性能发挥很好的作用,如果没有索性底层是这样的,mysql会到磁盘上的数据取一行然后在跟条件做比较不符合的丢弃掉,最后在根据排序规则进行文件排序,索性当然不止这些,还有mysql的聚簇索引,索引覆盖,myisam innodb索引的规则,myisam索引的叶子上不直接存数据,而是指向对物理行的引用,而innodb数据是指向对主键primary key的引用,如果没有明确指明primary key.系统会自动生成一个隐式的主键从而索性指向对该主键引用,建议系统学习