sql - 搜索查询执行时间与总表行数无关
问题描述
鉴于此搜索查询的结果始终包含相同的行子集?
如果这是不可能的,有什么方法可以使表大小对搜索执行时间的影响最小?
示例:两个结构相同但大小不同的表:table1
1000 行和table2
1000 000 行。这些表具有以下结构:
id
: 主键列ts_utc
: UTC 时间戳列user_id
: 外键列
在这两个表中,我们希望找到所有user_id
等于 1 且ts_utc
大于昨天日期的行。两个表的结果都包含相同的 10 行。
解决方案
您正在描述一个索引,特别是在(user_id, ts_utc)
. 这适用于查询:
select t.*
from t
where user_id = 1 and ts_utc >= current_date;
搜索时间并不完全相同,因为索引存储为平衡树。但是,您正在处理对数差异——它们非常小且难以测量。
推荐阅读
- spring - 具有 PrototypeBean 依赖的 SingletonBean
- sql - LocalDB 导入和导出选项不起作用
- python - 为数据框中的每一行运行函数
- excel - How to refer to the workbook where a function is used in Excel VBA?
- angular - 将 Angular 应用程序部署到 Heroku 时出错
- python - 在行中查找 x 并将行输出到文件
- python - 如何将数字转换为标准前缀?
- python - 如何按多级列过滤多索引数据帧?
- python - collections.Counter().values() 视图似乎在某些条件下按键排序。为什么以及它们是什么?
- javascript - 使用 python 和 selenium 无法与 keybord 和 .getAttribute 交互,为 data-* 属性返回 null