gpt4 book ai didi

MySQL : do I need indexes in this situation?

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

我有一个表“客户”和一个子表“订单”。

对于特定 View ,我需要显示每个客户的最后订单。

由于您不能在联接中使用 LIMIT,我首先使用了一个复杂的解决方案,其中包含 LEFT JOIN、GROUP_CONCAT 和 SUBSTRING_INDEX 来获取最后一个订单,但这非常慢,因为有数百万条记录。

然后我想到只将最后一个 OrderID 存储在 Clients 表中,每次 Orders 表更改时都会由触发器更新。然后我只对 LastOrderID 字段上的订单执行 LEFT JOIN。

在这种情况下,字段 LastOrderID 上的索引是否有用?或者不会被使用,因为源表始终是 Clients,因此没有对该字段进行排序、搜索等操作?

我问的原因是实际上它有点复杂,我实际上可能需要大约 20 个这样的字段。

更新:

我现在的查询是:

SELECT * 
FROM Clients AS c
LEFT JOIN Orders AS o ON o.OrderID=c.LastOrderID

客户端中 LastOrderID 的索引是否会提高速度,还是没有必要?

最佳答案

首先,您是否在 Order 表中建立了 Client 外键的索引?

单独执行此操作应该会显着提高性能。

关于MySQL : do I need indexes in this situation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8414076/

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