慢 SQL 列出较大后的查询 table
Slow SQL Queries after listing larger table
让我们调用有问题的数据库 db
,也让我们调用具有几百行 x
的较小的 table 和超过 10k 行的较大的 y
。
当我向 table x
发出查询时,使用基本查询 [=16] 在大约 0.0003 秒内发出查询没有任何问题=].
这适用于 db
中所有较小的 tables,所有查询的处理时间约为 0.3 毫秒。
但是,在向 table y
发出相同的基本查询 SELECT * FROM y LIMIT 25
之后,过程明显变慢了。有时需要 100 毫秒 来处理。
它影响 table y
的查询时间和 table x
.[=27 的查询时间=]
重新发布 table x
几次或在 db
中列出另一个小 table 后,问题似乎消失了。来自另一个数据库的 table 仍然很慢。
我阅读了很多有关可以提高查询速度的优化和性能增强的内容。 None 他们似乎涵盖了这个问题。
优化和性能以及 table 大小不是问题;缓存是。
因为没有WHERE
、GROUP BY
,也没有ORDER BY
,索引无所谓。
LIMIT 25
,没有ORDER BY
,会抓取前25行;之后有多少行并不重要。
如果"Query cache"在on,那么第一次你运行一次查询,会比较慢。之后(直到超出缓存),它将是 "fast" —— 0.3ms 是非常典型的。
即使 QC 关闭,也有其他缓存可以解释差异。
让我们调用有问题的数据库 db
,也让我们调用具有几百行 x
的较小的 table 和超过 10k 行的较大的 y
。
当我向 table x
发出查询时,使用基本查询 [=16] 在大约 0.0003 秒内发出查询没有任何问题=].
这适用于 db
中所有较小的 tables,所有查询的处理时间约为 0.3 毫秒。
但是,在向 table y
发出相同的基本查询 SELECT * FROM y LIMIT 25
之后,过程明显变慢了。有时需要 100 毫秒 来处理。
它影响 table y
的查询时间和 table x
.[=27 的查询时间=]
重新发布 table x
几次或在 db
中列出另一个小 table 后,问题似乎消失了。来自另一个数据库的 table 仍然很慢。
我阅读了很多有关可以提高查询速度的优化和性能增强的内容。 None 他们似乎涵盖了这个问题。
优化和性能以及 table 大小不是问题;缓存是。
因为没有
WHERE
、GROUP BY
,也没有ORDER BY
,索引无所谓。LIMIT 25
,没有ORDER BY
,会抓取前25行;之后有多少行并不重要。如果"Query cache"在on,那么第一次你运行一次查询,会比较慢。之后(直到超出缓存),它将是 "fast" —— 0.3ms 是非常典型的。
即使 QC 关闭,也有其他缓存可以解释差异。