gpt4 book ai didi

mysql - int(11) 和 int(6) 会导致索引问题吗?

转载 作者:可可西里 更新时间:2023-11-01 06:50:59 25 4
gpt4 key购买 nike

我是 MySQL 的新手。所以我发现有人在我们的生产环境中写了一些SQL:

SELECT o.`erp_orders_id`
FROM `erp_orders` o
WHERE o.`orders_status`> 2
AND o.`orders_status`< 5
AND o.`shipmentAutoMatched` IN
(SELECT s.`shipmentID`
FROM `erp_shipment` s
WHERE s.`shipmentScanLocal` = 2)

s.shipmentIDint(11)o.shipmentAutoMatchedint(6)
此查询命中索引

IDX_OR_OR_CU(orders_status, orders_type, currency_type)

虽然我实际上有另一个索引:

IDX_OR_SH(orders_status, shipmentAutoMatched)

我认为这样会更有效率。如果我将 IN 指令更改为如下数字:

IN(10, 11, 12)

IDX_OR_SH 被正确命中。所以我认为唯一的问题可能是关于 int(11)int(6)

所以问题:

  1. 我说的对吗?
  2. int(11)int(6) 都是 int 并且它们实际上都存储为INT32
  3. 我该如何解决这个问题?

最佳答案

对于关心问题的大家来说,这大概是a bug从 10 年前开始使用 InnoDB。它应该在 MySQL 6.0 中得到修复。不幸的是,我仍在使用 5.5。

它与 int(11) 和 int(6) 无关。只是所有子查询结果都不会命中父查询的索引。有人说更改 JOIN 语句可以解决这个问题,但它似乎对我不起作用。

当我得到新的东西时,我会回来更新答案。

关于mysql - int(11) 和 int(6) 会导致索引问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31645396/

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