对大表进行简单查询后就失去了连接

问题描述 投票:0回答:1

我正在运行两个表的复杂的LEFT JOIN查询。

Table A - 1.6 million rows
Table B - 700k rows.

所有列均已编制索引。

我尝试了不同的调试,但是发现问题没有成功,因为我想这不是太多数据。

无论如何,我发现如果删除查询中的'WHERE'子句是没有问题的但是,当我在表A上尝试此简单查询时-它返回“丢失的连接”。

SELECT id FROM table_A ORDER BY id LIMIT 10
  1. 运行此查询的最佳实践是什么?我不想超过超时时间。
  2. 我的表太大了,我应该“清空”旧数据还是什么?
  3. 您如何处理具有数百万行和JOINS的大表?我所知道的可以帮助做的是索引编制,而我已经做到了。
php mysql sql performance timeout
1个回答
0
投票

一百万行-没问题;十亿行-然后变得很有趣。您的桌子不是“太大”。

“所有列均已编制索引。” -通常是一个错误。我们需要先查看实际的查询,然后才能评论哪些索引将是有用的。

可能您需要一个“复合”索引。

SELECT id FROM table_A ORDER BY id LIMIT 10-如果索引为id开始,则几乎立即返回。请提供SHOW CREATE TABLE table_A,以便我们可以看到架构。

© www.soinside.com 2019 - 2024. All rights reserved.