WEB开发网
开发学院数据库MySQL MySQL分表优化试验 阅读

MySQL分表优化试验

 2009-01-05 11:15:43 来源:WEB开发网   
核心提示: mysql> select count(*) from t_group_david;+--+| count(*) |+--+|1298576 |+--+1 row in set (0.00 sec)几乎是瞬间的,mysql> select count(*) from t_gro

mysql> select count(*) from t_group_david;
+----------+
| count(*) |
+----------+
| 1298576 |
+----------+
1 row in set (0.00 sec)

几乎是瞬间的。

mysql> select count(*) from t_group where user_name <> 'david';
+----------+
| count(*) |
+----------+
| 9090032 |
+----------+
1 row in set (9.26 sec)
执行了将近10秒,可以想象,这个是实际的项目中是不能忍受的。
mysql> select (select count(*) from t_group) - (select count(*) from t_group_david) as total;
+---------+
| total  |
+---------+
| 9090032 |
+---------+
1 row in set (0.00 sec)

几乎是瞬间的。

我们来看看聚集函数。

对于原表的操作。

mysql> select min(money),max(money) from t_group where user_name = 'david';
+------------+------------+
| min(money) | max(money) |
+------------+------------+
|   -6.41 |   500.59 |
+------------+------------+
1 row in set (0.00 sec)
最小,最大值都是FULL INDEX SCAN。所以是瞬间的。
mysql> select sum(money),avg(money) from t_group where user_name = 'david';
+--------------+------------+
| sum(money)  | avg(money) |
+--------------+------------+
| 319992383.84 | 246.417910 |
+--------------+------------+
1 row in set (2.15 sec)
其他聚集函数的结果就不是FULL INDEX SCAN了。耗时2.15秒。

上一页  1 2 3 4 5  下一页

Tags:MySQL 分表 优化

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