MySQL实战:SQL优化及问题排查_字段

有更合适的索引不走,怎么办?

MySQL在选取索引时,会参考索引的基数,基数是MySQL估算的,反映这个字段有多少种取值,估算的策略为选取几个页算出取值的平均值,再乘以页数,即为基数

查看索引基数

show index from table_name

使用force index可以强制使用索引

重新统计索引信息,会重新计算索引的基数

analyze table

count 语句慢,如何解决?

count(非索引字段):无法使用覆盖索引,最慢
count(索引字段):可以使用覆盖索引但依然要取出数据判空
count(1):不需要取出数据,但需要判断1是否为null
count(*):经过专门优化,不需要判空,理论最快

获取不到数据库连接

查看超时释放

show variables where variable_name like '%timeout'

查看链接数

show processlist
show full processlist

查看最大连接数

show variables like '%max_connections%'

修改最大连接数

set GLOBAL max_connections = 200;