sql - 索引一个大表以在每列中查找不同的值
问题描述
表“TestResult”非常大(超过 20M 行),但并非每个 Test、Student 或 ResultType 都存在于其中。
我想快速获得唯一的 TestId、StudentId 和 ResultTypeId。我目前的策略是按以下方式在前面的每一列上建立一个索引。
CREATE NONCLUSTERED INDEX [NCI_TestResult_ResultTypeId] ON [dbo].[TestResult]
(
[ResultTypeId] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
我每列都有一个这样的索引。
这是执行此操作的正确方法,还是有更好的方法来执行此操作,所有三列只有 1 个索引?
我正在使用 SqlServer 2016
解决方案
正如 ESG 所说,创建这三个索引是正确的方法,但是如果您在此表上进行批量插入/删除/更新,并且数据量很大,则可能会遇到性能问题。
推荐阅读
- php - 表单标签仅针对第一条消息从边界打印出来
- javascript - 如何在 NodeJS 中访问当前 URL
- javascript - 仅在异步函数执行后执行函数
- python - ValueError:检查目标时出错:预期 PREDICTIONS 有 4 个维度,但得到的数组形状为 (20, 131) [Keras]
- android - 使用 ConstraintLayout 的片段 onCreateView 不遵守 ConstraintSet
- reactjs - 单击时如何将数据从一个反应组件传递到另一个反应组件
单击时如何将数据从一个反应组件传递到另一个反应组件
[ { "id": 1, "title": "XYZ Title", "body": "www.xyz.com sample hits", "comments": [ { "id": 1, "postId": 1, "name": null,
- java - 如何从 Java 中的用户输入中获取日期?
- c# - LinqKit 嵌套调用“LINQ to Entities 无法识别方法‘Invoke’”
- python-3.x - 有没有一种简单的方法来初始化一个以 NoneType 为键的字典?
- flutter - Flutter:无法使用 dio 获取数组 json 到对象列表