我有一些大约100列宽的桌子。我还没有将它们归一化,因为要将它们重新组合起来将需要将近30多个连接,并且不确定它是否会表现得更好……还没有测试(我会),所以不能肯定。
不管怎么说,这不是问题。我一直在为这些表中的列编制索引,我知道这些列会被频繁地提取,因此每个表大约有50个索引。
不过我得考虑一下。如果没有主键(基本上是一个项目号),这些列将永远不会被自己拉出来,并且是没有意义的。PK将始终用于连接,即使在简单的SELECT查询中,它也必须是指定的列,因此数据是有意义的。
这让我进一步思考了指数以及它们是如何工作的。据我所理解,值的位置被提交到该列的内存中,因此在查询中很快就能找到。
例如,如果您有:
SELECT itemnumber, expdate
FROM items;而且itemnumber和expdate都是索引的,这是否过分,是否真的增加了任何好处?仅仅索引itemnumber就足够了,索引就会知道expdate或为该项查询的其他任何内容都在同一行中吗?
其次,如果多列构成主键,索引是将它们组合在一起,还是单独地进行分组?
例如,
CREATE INDEX test_index ON table (pk_col1, pk_col2, pk_col3);与
CREATE INDEX test_index1 ON table (pk_col1);
CREATE INDEX test_index2 ON table (pk_col2);
CREATE INDEX test_index3 ON table (pk_col3);谢谢你提前把它清理干净!
https://stackoverflow.com/questions/45491514
复制相似问题