我有一个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中的同一个表中。它应该认识到这是同一张桌子,所以只是在第一个联盟开放。
是否有人可以帮我减少在“联盟全部”中开桌子的时间?
答案 0 :(得分:2)
6ms非常快。你获取的数据是25倍,而且只需要6倍的时间。
我不再担心它,并找到应用程序中真正的瓶颈所在。如果每个查询6ms是一个问题,您可能希望尝试减少每秒执行的查询数。