0

У меня есть таблица с именем «Погашение», в которой первичный ключ имеет заемщик. Мне нужно определить индексы, которые должны быть созданы на этой таблице. У меня есть следующие запросы, и я придумал индексы. Мне нужно знать, правильны ли эти индексы или есть лучший способ.Решение по индексам с использованием запроса

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); 

ответ

2

Ваши показатели выглядят хорошо для ваших запросов. Вы можете уменьшить три индекса к двум главным покрывающих индексов:

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

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

Я бы вопрос о включении name и address столбцов в индексе. Они могут быть довольно большими, поэтому накладные расходы, связанные с их просмотром на страницах данных, возможно, меньше, чем увеличение размера индекса. Однако это, скорее всего, очень незначительный момент, в любом случае.

+0

Предположим, что в конце последнего запроса была часть «по порядку», это также может быть включено в список включенных индексов indxloanamoun? –

+0

Вы можете включить его в индекс, но «порядок по сумме» потребовал бы фактически сделать сортировку (он не будет использовать индекс). Вы можете сделать «order by loanamount» - это будет использовать индекс. –

 Смежные вопросы

  • Нет связанных вопросов^_^