Первый индекс явно лучше второго для этого запроса.
В первом случае он может искать точное значение domainid
и затем читать первые 500 строк, которые уже находятся в * 1004. * упорядочить, а затем остановить (плюс 500 поисков, чтобы получить значения других столбцов, если в таблице больше двух показанных столбцов).
Второй индекс может быть полезен для запроса, но только в очень ограниченных случаях. Это устраняет необходимость сортировки по clickedOn
, но требует сканирования индекса по порядку и остановки после обнаружения первых 500 строк, соответствующих domainId
. Если вам очень повезло, то первые 500 строк в порядке clickedOn
также соответствуют предикату domainId
, поэтому он должен прочитать только 500 строк. Но скорее всего, это не так. В худшем случае нет даже 500 совпадающих строк, и нужно прочитать весь индекс. Для получения значений других столбцов также необходимо выполнить 500 поисков.
Если таблица относительно мала, то нельзя использовать ни один из индексов, поскольку SQL Сервер может принять решение о сканировании индекса покрытия, и сортировка дешевле, чем 500 просмотров.