dra*_*fly 14 sql-server indexing clustered-index
我有一个多对多的表,让我们说:
PersonJob(personId,jobId)
Run Code Online (Sandbox Code Playgroud)
with clustered index(personId,jobId).
问题是:
如果在SQL中的某个地方,我会进行如下查询:
SELECT *
FROM PersonJob JOIN Job ON PersonJob.jobId = Job.jobId
.......
Run Code Online (Sandbox Code Playgroud)
是否会利用该聚集索引在PersonJob表中查找具有特定jobId的记录?或者我最好在PersonJob表的jobId列上创建新的非群集非唯一索引?
谢谢帕维尔
Pao*_*lla 16
您将无法从聚簇索引中获得任何优势,您的查询仍然需要扫描PersonJob表的所有行.
如果您的聚簇索引(jobID,personId)中的列被反转,那么您将利用索引.请考虑聚簇索引按表中索引的列的值对表中的实际行进行排序.因此,对于(personId,jobID)上的聚簇索引,您将具有相同personId的所有行"分组"在一起(按jobID的顺序),但具有相同jobID的行仍分散在表中.