gpt4 book ai didi

MySQL 简单选择 - 15 秒执行时间 - 700 万行

转载 作者:行者123 更新时间:2023-11-29 16:13:28 24 4
gpt4 key购买 nike

我有一个 mysql 表,其中包含 700 万行(每月将增长 1000 万行)用户流量,我需要对其进行实时分析。该表有多列,但我只需要结果集中的一列。

这是查询:

SELECT DISTINCT visitor 
FROM traffic
WHERE `visited` < '2019-03-01' AND `client_id` = 1 AND `country` IS NOT NULL

此查询当前需要 15 秒执行 700 万行。我有关于 visitorvisitedclient_idcountry 的单独索引以及关于 [访问过client_id国家/地区]。

没有一个索引是唯一的,也不可能是唯一的。

你们能想到什么方法可以缩短这个查询的执行时间吗?

最佳答案

在这个答案中,我将假设访问的是文本数据,如 varchar,因为我们看到 client_id 是数字,对于国家/地区,我们只想查看它是否具有值。如果访问是文本的假设成立,则解决方案是将其类型更改为 DATE、DATETIME 或 TIMESTAMP。由于在本例中我们似乎对时间不感兴趣,因此 DATE 列应该是 HitTest 门的候选者。

解决方案(确保您涉及交易):

  1. 在表中创建一个 temp_visited 列,其类型与访问的 has 相同

  2. 将访问过的值复制到 temp_visited

  3. 将访问值设置为 null 或删除访问列(无论您需要什么)

  4. 确保您有一个 DATE 类型的已访问列

  5. 通过将文本值转换为 DATE,将 temp_visited 中的值复制到访问中

  6. 删除 temp_visited 列

关于MySQL 简单选择 - 15 秒执行时间 - 700 万行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55048034/

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