【发布时间】:2021-05-07 15:25:13
【问题描述】:
在我的场景中,我有一个包含很多可选列的表(总共 20 列,比如从 col00 到 col19,每一列都包含一个不可为空的整数)。 当列包含 0 时,它被认为是空的,任何其他值都有意义。 可以查询这 20 列的任何子集,所以我应该查询 col01 = int1 和 col17 = int2。
我需要提高此类查询的性能,但我不知道如何创建具有代表性的索引。 当然,我可以监视表格一段时间并查看哪些列子集最常搜索,但这对我来说不是一个令人满意的解决方案(表格每隔几个月定期重新生成......并且以这种方式编码的“标签”可能会改变)
【问题讨论】:
-
是否有任何列总是通过?
-
不,每列可能(并非每个客户都使用所有列)绑定到标签集,标签集是可用作该列中标签的允许值范围。例如:颜色标签的第一列,尺寸标签的第二列..等等。如果有人要查询红色项目,大小为 n 英寸,我将不得不检查第一列和第二列
标签: sql-server indexing query-optimization