0

我有一个名为“Repayment”的表,它的主键是 borrower_id。我需要决定需要在这个表上创建的索引。我有以下查询,并提出了索引。我需要知道这些索引是否正确或者是否有更好的方法。

SELECT DISTINCT name, address
FROM Repayment
WHERE borrower_id = 4;

create index idxrep on repayment(borrower_id) include(name,address);

SELECT *
FROM Repayment
WHERE borrower_id = ? AND repayment_date > '11-12-2014';

create idxborrrep on repayment(borrower_id,repayment_date);

SELECT borrower_id, loanamount
FROM Repayment
WHERE loanamount BETWEEN ? AND ?;

create indxloanamount on repayment(loanamount) include(borrower_id,loanamount);

4

1 回答 1

2

您的索引看起来很适合您的查询。您可以将三个索引减少到两个主要覆盖的索引:

create idxborrrep on repayment(borrower_id, repayment_date) include (name, address);

create indxloanamount on repayment(loanamount) include(borrower_id,loanamount);

我会质疑索引中包含nameaddress列。这些可能相当大,因此在数据页中查找它们的开销可能小于索引大小的增加。然而,无论哪种方式,这很可能是一个非常小的问题。

于 2015-04-11T23:04:52.253 回答