Как определить, какой индекс следует изменить, чтобы удалить поиск по ключу?

#sql #indexing #key #lookup

Вопрос:

Допустим, у вас есть запрос, который дважды СОЕДИНЯЕТ одну и ту же таблицу, используя разные поля, поэтому используются разные индексы. Когда вы смотрите на план выполнения, возникает проблема с поиском ключа. Как я узнаю, какой индекс мне следует изменить, чтобы избавиться от поиска по ключу?

Комментарии:

1. Можете ли вы добавить графический пример?

2. Пара вопросов: 1) Вы, кажется, уверены, что индексы используются для поиска; это правильно? 2) Что вы подразумеваете под «проблемным поиском ключей»? Это медленно, неэффективно, не работает и т. Д. Пожалуйста, добавьте план выполнения и объясните, почему вы считаете это хлопотным.

3. Глядя на план выполнения, я вижу два поиска по индексам в таблице, которая дважды подключена, оба показывают, что используются разные индексы. Существует также поиск по ключу, который находится в этой же таблице. Поиск по ключу должен выполняться миллионы раз, поэтому изменение одного из индексов для включения в просматриваемый столбец определенно поможет, но какой индекс? Я не хочу добавлять и то, и другое.

4. @ScottEvans Я буду рад помочь, но вопрос слишком абстрактный. Пожалуйста, добавьте оптимизируемый запрос и текущий план выполнения. Я предполагаю, что вы на правильном пути, существенно изменив индексы, чтобы они стали «охватывающими индексами». Если производительность критична, я бы преобразовал оба индекса. Тогда я мог бы попробовать возвращать по одному из них за раз.

5. И… Если вам нужно импортировать индекс, я бы постарался перенести фильтрацию как можно раньше, чтобы свести количество запросов к минимуму. Какую базу данных вы используете? На основе кучи или индекса?