Mysql问题汇总2

1 索引失效的几种情况?

1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)
注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引

2.对于复合索引,不是使用的第一部分,则不会使用索引

3.like查询是以%开头

4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引

5.如果mysql估计使用全表扫描要比使用索引快,则不使用索引

6.对索引列进行运算,运算包括(+、-、*、/、!、<>、%、like'%_'(%放在前面)、or、in、exist等),导致索引失效。

7.where子句的查询条件中使用了函数,MySQL将无法使用索引;

2 Mysql如何优化?

1、开启查询缓存,将相同的查询结果放到缓存中

2、使用Explain 分析查询语句

3、使用Limit关键字

4、为搜索字段建立索引

5、要Join表时,为Join的字段建立索引、

6、垂直分割:将多字段的大表变成几张表

7、主从复制以及读写分离
主从复制的数据一致性:半同步复制、并行复制
读写分离适用于读远大于写的场景,对于读和写比例相近的应用,应该部署双主相互复制。
mysql 主从复制原理

8、如果时分布式的,则使用共享缓存mechcache 来进行查询缓存

你可能感兴趣的:(Mysql问题汇总2)