gpt4 book ai didi

mysql - 尝试通过在MySQL中添加索引来改善慢查询

转载 作者:行者123 更新时间:2023-11-29 15:32:58 25 4
gpt4 key购买 nike

对于以下查询,我尝试为 row_id、created_in、updated_in 以及 entity_id、row_id、created_in、updated_in 创建索引。在这两种情况下,索引都会被忽略。

SELECT 
e.entity_id
FROM
catalog_product_super_link l
INNER JOIN catalog_product_entity e
ON e.row_id = l.parent_id
AND e.created_in <= 2147483647
AND e.updated_in > 1
WHERE
l.product_id IN (5528, 5529, 5530, 5531, 5532, 5533, 5534, 5535, 5540, 5541)

(为了便于阅读,仅使用tick标记,例如可能是保留字的列,例如datecolumn等)

EXPLAIN 报告我的 key 是可能的,但它选择了Using where

在生产中,product)id IN 列表可能会更大。

最佳答案

我会在 catalog_product_entity 表上创建 (row_id) 或 (row_id, entity_id) 并 (product_idrow_id)位于 catalog_product_super_link 表上。

不确定 created_inupdated_in 是否应包含在第一个索引中,因为我不知道可以使用提供的条件过滤多少行。

根据 EXPLAIN 结果(通常最好提供有问题的结果),在许多情况下,优化器(和 EXPLAIN)会根据您拥有的数据/统计信息选择不同的计划。如果每个表只有大约 100 行,则获取所有数据并就地过滤它比使用索引 => 数据查找更快。

因此,在尝试根据 EXPLAIN 结果进行优化之前,您应该使用一些实际数据填充数据库。

关于mysql - 尝试通过在MySQL中添加索引来改善慢查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58544875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com