mysql数据库索引与sql优化
索引索引一般设置不要超过6个,且每个索引一般不要超过3个字段。索引是直接以B树或B+树的形式存储在拼盘中。虽然索引多了有助于查询,但数据每次在增删改时,都需要修改索引,所以需要耗费时间,如果索引越多耗时越长,所以不要设太多索引。如果有碰到大量重复的字段,如男/女就不要设成索引了。如果可以,尽量选择数字类型当索引,因为数字只需要比较值,而字符串则需要逐字比较。设索引主要针对where和gourp b
索引
索引一般设置不要超过6个,且每个索引一般不要超过3个字段。
索引是直接以B树或B+树的形式存储在拼盘中。
虽然索引多了有助于查询,但数据每次在增删改时,都需要修改索引,所以需要耗费时间,如果索引越多耗时越长,所以不要设太多索引。
如果有碰到大量重复的字段,如男/女就不要设成索引了。
如果可以,尽量选择数字类型当索引,因为数字只需要比较值,而字符串则需要逐字比较。
设索引主要针对where和gourp by字段
索引主要有三种,唯一索引、主键索引、复合/联合/组合索引(叫法不同)。
主键索引必然是唯一索引。
组合索引就是指多个字段组成的索引,当创建一个索引包含A,B,C时,其实就等同于创建了索引A、A+B、A+B+C。
至于使用的顺序无所谓,mysql会自动优化调整成索引的顺序。
sql优化
sql优化主要就是保证使用索引来提高查询效率。
不要写select *
不这样写的原因是,*会查询每个字段,如果只是把需要的字段查出来可以减少数据库io。
因为数据库是把数据写进硬盘中,使用时通过io读取和修改。
不要使用or
使用or就不会触发索引,可以使用union all连接两个查询结果
不要使用in和not in
模糊查询不要左模糊
因为是从左到右逐字匹配的,如果左模糊范围就扩大了很多,效率就下降了。
不要在直接操作查询字段
如 where age/2=…,原原本本的使用,所有的操作直接写在参数
更多推荐
所有评论(0)