Това всъщност е по-трудно, отколкото изглежда - типична съвременна СУБД (и MS SQL Server не е изключение) понякога ще направи пълно сканиране на таблица, дори ако има наличен индекс, просто защото това може да е по-бързо при малки количества данни.
Пример:
-
Последният израз в този пример за SQL Fiddle може да бъде удовлетворен от индекса, но планът на заявката ясно показва сканиране на таблица:
-
Но ако вмъкнем някои данни , се използва индексът:
Нещо повече, решението, което взема СУБД, може да бъде повлияно от това колко свеж/точен е статистика са.
Най-надеждният тест за това дали индексът се използва е просто да попълните вашата база данни с представителни количества данни и след това погледнете план за изпълнение . И не забравяйте да замерите времето на действителното изпълнение на заявката, докато сте в нея!
Опростен пример:ако цялата таблица се побира в една страница на базата данни, по-бързо е просто да заредите тази страница и да я преминете последователно, отколкото да чакате допълнителни I/O за страницата, съдържаща индекс.>