【发布时间】:2014-05-06 05:59:15
【问题描述】:
在 mysql 数据库(在 Linux 上运行)我执行以下查询:
delete m,i from Table1 AS m
LEFT JOIN
Table2 AS i
ON m.GUID = i.OutId
WHERE m.Direction='in'
AND m.Id<4294967296
这需要将近 2 分钟的时间! Table1 有 458 个条目,Table2 有 5659 个条目。
为什么这个查询会消耗这么多时间?用于计算 Table2 中元素的 COUNT 查询仅使用 0.24 秒进行比较。
如何加快查询速度?哪些部分比较耗时?
附加信息:
- 我不是
sql专家 - 我尝试通过运行
alter table Table add index (GUID);(以及其他列的类似命令)向表添加索引,但它似乎对时间消耗没有影响。我在这里做错了吗? - 必须在不改变表结构的情况下进行“优化”或任何操作。
【问题讨论】:
-
检查JOIN条件中的列是否有索引。还要检查这些表是否有任何删除触发器。
-
能否请您“解释”查询以了解优化器如何实际工作以执行查询
-
如何检查这些列是否有索引?
-
SELECT *也需要这么长时间吗? -
正如我所提到的,大桌子上的
SELECT COUNT只需要 0.24 秒。
标签: mysql