如何减少在同一个表的“union all”中打开myisam表的时间?

时间:2010-05-31 19:42:35

标签: mysql

我有一个2.5M行的myisam表,我使用union all来得到我的结果如下:

(SELECT t.id FROM t WHERE type=1 LIMIT 10)
UNION ALL
(SELECT t.id FROM t WHERE type=2 LIMIT 10)
...
UNION ALL
(SELECT t.id FROM t WHERE type=25 LIMIT 10)

打开表t的时间约为6ms。

只需一个请求:

SELECT t.id FROM t WHERE type=1 LIMIT 10

时间约为1毫秒。

我不明白为什么mysql会花更多时间在union all中的同一个表中。它应该认识到这是同一张桌子,所以只是在第一个联盟开放。

是否有人可以帮我减少在“联盟全部”中开桌子的时间?

1 个答案:

答案 0 :(得分:2)

6ms非常快。你获取的数据是25倍,而且只需要6倍的时间。

我不再担心它,并找到应用程序中真正的瓶颈所在。如果每个查询6ms是一个问题,您可能希望尝试减少每秒执行的查询数。