gpt4 book ai didi

mysql - count(*) 使用左连接需要很长时间才能响应

转载 作者:行者123 更新时间:2023-11-29 13:49:48 27 4
gpt4 key购买 nike

我有一个 MySQL 查询,用于显示应用程序列表页面中的数据计数。

查询

SELECT COUNT(*) FROM cnitranr left join cnitrand on cnitrand.tx_no=cnitranr.tx_no

解释屏幕截图 enter image description here

cnitranr 上的索引

tx_no (primary )approx 1 crore of data[ENGINE MYISAM]

cnitland 索引

(tx_no secondary)approx 2 crore of data[ENGINE MYISAM]

分析器输出是这样的 profiler

Total count after execution is

任何人都可以建议优化此查询的可能性,或者我想运行一个 crone 作业来计算计数。请帮忙。

最佳答案

您需要实现一个物化 View 。

由于 MySQL 不直接支持它们,因此您需要创建一个这样的表:

CREATE TABLE totals (cnt INT)

并在两个表上编写一个触发器,该触发器将在 INSERTUPDATEDELETE 上递增和递减 cnt到每个表。

请注意,如果任一表中都有一条包含许多链接记录的记录,则影响此类记录的 DML 将会很慢。

对于大数据量,您很少需要精确的计数,尤其是分页。正如我在上面的评论中所说,Google、Facebook 等仅在分页结果上显示近似数字。

人们不太可能想要在只能显示 100 条左右的页面上浏览 2000 万条以上的记录。

关于mysql - count(*) 使用左连接需要很长时间才能响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16851024/

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