Mysql 如何减少以“打开”方式打开myisam表的时间;“联合所有人”;同一张桌子的桌子?

Mysql 如何减少以“打开”方式打开myisam表的时间;“联合所有人”;同一张桌子的桌子?,mysql,Mysql,我有一个myisam表格,有2.5M行,我使用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 LI

我有一个myisam表格,有2.5M行,我使用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中的同一个表上。它应该认识到这是同一个表,因此只在第一个联合处打开


有人能帮我缩短在“联合所有”中打开表格的时间吗?

6ms相当快。您获取的数据量是原来的25倍,而且只需要6倍的时间


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

MySQL解析UNION ALL查询可能需要更长的时间?我同意您的看法。6ms非常快,但用户经常使用此请求,这意味着我必须尽可能快地发出此请求。@parm.95:也许你可以缓存结果?@parm.95:顺便说一句,没有订单限制通常是错误的。事实上,订单限制是为了一个“联盟”而终止我的请求约12s。我想知道是否有办法尽可能长时间地打开表,也许可以在my.ini中更改一些参数?让桌子开着有什么不方便?插入、更新、删除后,表是否总是关闭?@parm.95:如果ORDER BY很慢,那是因为缺少索引。