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

mysql性能的检查和调优方法

 2009-05-15 11:19:12 来源:WEB开发网   
核心提示: 但是,如果我用别的userid查询,mysql性能的检查和调优方法(4),结果又会有所不同:mysql> desc select * from imgs where userid="admin" order by clicks desc limit 10;++-+

但是,如果我用别的userid查询,结果又会有所不同:

mysql> desc select * from imgs where userid="admin" 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 | 2944 | Using where; Using filesort |

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

1 row in set (0.00 sec)

这个结果和userid="7mini"的结果基本相同,但是mysql用userid索引一次搜索后结果集的大小达到2944条,这2944条记录都会加入内存进行filesort,效率比起7mini那次来说就差很多了。这时可以有两种办法可以解决,第一种办法是再加一个索引和判断条件,因为我只需要根据点击量取最大的10条数据,所以有很多数据我根本不需要加进来排序,比如点击量小于10的,这些数据可能占了很大部分。

我对clicks加一个索引,然后加入一个where条件再查询:

create index clicks on imgs(clicks);

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

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

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

Tags:mysql 性能 检查

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