gpt4 book ai didi

python - 在我的索引列上使用 where 子句来获取数据范围是否会使查询更快

转载 作者:行者123 更新时间:2023-11-29 09:30:56 26 4
gpt4 key购买 nike

我有 2 亿行日期,它们在名为 date 的列中建立索引。

我正在尝试使用 pymysql 将表引入 python,以便我可以分析。

使用 where 子句获取较小的数据 block 是否比获取所有数据花费更长的时间?

这是我的查询:

query = """
select
serial_number,
k.date,
battery_rate,
controller_battery,
mode
from table k
where k.date between date('2019-06-15') and date('2019-06-20');
"""

如果可能的话,我想获取整个表,但我想由于索引位于日期列上,我可以使用where子句更快地获取数据范围,因为mysql不需要查看范围之外的行。如果我的假设是错误的,请纠正我。

获取数据最有效的方式是什么?

注意:日期索引的基数很高,但我无法更改它。

最佳答案

如果date 列上的基数很高,那么您在date 上的索引应该已经可以帮助查询。您可以在查询中运行EXPLAIN SELECT ...来查看MySQL实际上选择在幕后执行什么操作。话虽这么说,您可以添加以下索引,它涵盖整个 SELECT 子句:

CREATE INDEX cover_idx ON yourTable (date, serial_number, battery_rate,
controller_battery, mode);

如果 MySQL 使用此索引,将完全覆盖整个查询,这意味着不需要返回聚集索引(即原始表)。

关于python - 在我的索引列上使用 where 子句来获取数据范围是否会使查询更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58759499/

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