sql-server - TSQL IN 与使用 Where with >= 和 <=
问题描述
我有 10 多个事实表。他们每个人都有一个非唯一聚集索引Id_Config_table
。每个数据插入,来自 Config_Table 的 Id 都被分配给事实表。每个Id_Config_table
包含大约 1-150 万行数据。
配置表:
+----+-----------+----------+
| Id | FactTbl | Date |
+----+-----------+----------+
| 1 | FactTbl_1 | 20190101 |
| 2 | FactTbl_2 | 20190101 |
| 3 | FactTbl_1 | 20190101 |
| 4 | FactTbl_2 | 20190102 |
+----+-----------+----------+
上表中的日期没有排序,它是按 Id 排序的。
我的事实表如下所示:
Fact_Table_1:
+------+---------------+-----------------+
| Col1 | few_more_cols | Id_Config_table |
+------+---------------+-----------------+
| .. | .. | 1 |
+------+---------------+-----------------+
| .. | .. | 3 |
+------+---------------+-----------------+
Fact_Table_2:
+------+---------------+-----------------+
| Col1 | few_more_cols | Id_Config_table |
+------+---------------+-----------------+
| .. | .. | 2 |
+------+---------------+-----------------+
| .. | .. | 4 |
+------+---------------+-----------------+
目前,我正在使用这个查询:
Select
col1,
few_more_cols
from
Fact_Table_1
Where
Id_Config_table IN (Select Id
from Config_Table
where Date >= 20190101 and Date <= 20190331)
注意: Fact_Table_1 或 Fact_Table_2 中的数据使用 排序Id_Config_table
,而不是按此排序,Date
这就是我需要使用子查询的原因。我的事实表包含 1 到 150 万行数据Id_Config_table
。
现在我打算添加一个新列,它是 int 格式的 Date 并使其成为新的聚集索引。我无法删除该Id_Config_table
列,因为它正在其他地方使用。
Fact_Table_new:
+------+---------------+-----------------+----------+
| Col1 | few_more_cols | Id_Config_table | Date |
+------+---------------+-----------------+----------+
| .. | .. | 8 | 20190101 |
| .. | .. | 7 | 20190102 |
| .. | .. | 1 | 20190103 |
+------+---------------+-----------------+----------+
在这种情况下,数据将按日期排序。我现在可以删除子查询
Select
col1, few_more_cols
from
Fact_Table_1
Where
Date >= 20190101 AND Date <= 20190331
如果我使用新索引使用第二个查询,它会提高查询性能吗?
解决方案
推荐阅读
- python - Tabula-py 在 df 的一个特定列上返回“...”。其他一切似乎都有效,
- kubernetes - 有没有办法将本地目录(本地我的意思是我的笔记本电脑或 VM 盒子的目录)挂载到远程运行的 k8s 集群
- java - 在 Eclipse 中编译 Java 代码时出现多个错误
- python - Python中的复杂列表理解
- html - 交替 CSS Grid 列和移动视图
- python - Python字典选择
- python - Python 2 vs Python 3 - 三个参数的地图行为差异?
- python - 使用python在文件中写入元组列表
- javascript - 在 Javascript 中遇到 cellCompete 问题,需要一些帮助
- python - 使用 matplotlib 在不同文件中保存两个不同的图形