可以有人告诉我为什么这是查询非常慢?

时间:2016-11-20 19:32:39

标签: mysql database

有人可以解释为什么这个带有超过5000条记录的IN子句的查询太慢了吗?

表格结构

SELECT wp_id,objectId FROM wp_transactions_log WHERE `operation` = "insert" AND `wp_id` != 0 AND `status` != "ignore" AND `table_name` ='itg_wpclass_dates' AND objectId IN (... 5k record)

此表包含5k记录。

查询:

SELECT wp_id,objectId FROM wp_transactions_log WHERE  objectId IN (5k record)

即使这个查询也一样:

{{1}}

注意:IN子句中的所有参数在表行中本身是相同的。 我的意思是速度慢超过15秒。

2 个答案:

答案 0 :(得分:2)

objectid未编入索引。复合主键仅被索引。在objectid上添加索引,然后尝试。

ALTER TABLE wp_transactions_log ADD INDEX (objectid);

虽然如果您有大量数据,那么添加索引会锁定您的元数据,使用 INPLACE 算法以最小的锁争用来执行此操作。

此外,在您选择语句之前,只需添加Explain并向我们提供响应。这将是识别表格中问题的一个很好的指标。

答案 1 :(得分:0)

查询速度很快,需要200ms才能完成,但处理查询和检索数据的时间很长。我认为没有办法减少这段时间。