WEB开发网
开发学院数据库MySQL mysql性能的检查和调优方法 阅读

mysql性能的检查和调优方法

 2009-05-15 11:19:12 来源:WEB开发网   
核心提示: ++-+---+--+---+--+-+--+---+-+1 row in set (0.00 sec)这条sql结果集会有12506条,用到了filesort,mysql性能的检查和调优方法(3),所以执行起来会非常消耗效率的,这时mysql执行时会把整个表扫描一遍,然后虽然使用了fil

+----+-------------+-------+------+---------------+------+---------+------+-------+-----------------------------+

1 row in set (0.00 sec)

这条sql结果集会有12506条,用到了filesort,所以执行起来会非常消耗效率的。这时mysql执行时会把整个表扫描一遍,一条一条去找到匹配userid="7mini"的记录,然后还要对这些记录的clicks进行一次排序,效率可想而知。真实执行时如果发现还比较快的话,那是因为服务器内存还足够将12506条比较短小的记录全部读入内存,所以还比较快,但是并发多起来或者表大起来的话,效率问题就严重了。

这时我把userid加入索引:

create index userid on imgs (userid);

然后再检查:

mysql> desc select * from imgs where userid="7mini" order by clicks desc limit 10;

+----+-------------+-------+------+---------------+--------+---------+-------+------+-----------------------------+

| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

+----+-------------+-------+------+---------------+--------+---------+-------+------+-----------------------------+

| 1 | SIMPLE | imgs | ref | userid | userid | 51 | const | 8 | Using where; Using filesort |

+----+-------------+-------+------+---------------+--------+---------+-------+------+-----------------------------+

1 row in set (0.00 sec)

嗯,这时可以看到mysql使用了userid这个索引搜索了,用userid索引一次搜索后,结果集有8条。然后虽然使用了filesort一条一条排序,但是因为结果集只有区区8条,效率问题得以缓解。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:mysql 性能 检查

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接