SELECT *
FROM Movies
WHERE studioName = ‘Disney’ AND year = 1990;
Насколько каждый из этих индексов поможет?Понимание основы индекса в SQL
CREATE INDEX YearIndex ON Movies(year);
CREATE INDEX StudioIndex ON Movies(studioName);
CREATE INDEX YSIndex ON Movies(year,studioName);
CREATE INDEX SYIndex ON Movies(studioName,year);
Насколько каждый индекс поможет, если предложение WHERE было год = 1990?
Создание индекса на год действительно поможет, потому что существует много лет, в течение которого были созданы фильмы, поэтому поиск был бы существенно сведен к минимуму.
Studioname
также поможет, но не столько, сколько год, потому что существует больше лет, чем студийные игры.
year,studioname
является лучшим выбором в этом случае, так как очевидно, поиск минимизируется больше, чем два предыдущих
studioname,year
это хорошо, но не так хорошо, как и предыдущий.
Сколько будет помогать каждый из индексов, если предложение WHERE было годом < 1990?
Индексирование на студиейном поможет больше, чем индексирование по году, потому что в этом случае мы должны искать все годы меньше, чем в 1990 году, поэтому, если мы индексируем по году, нам придется искать пути всех лет меньше 1990 года, поэтому я считаю, что индексирование на студийном, год - лучший вариант.
Это правильный способ подумать об этом?
(year, studioName) и (studioName, year) индексы, вероятно, эквивалентны, если вы просматриваете их оба, и, по крайней мере, в Postgres, поиск по первому столбцу индекса лишь немного эффективнее, чем поиск по второй (потому что он может читать префиксы индексов). Не уверен, что означает «все годы меньше 1990 года». – Ryan
Какая СУБД? Насколько велика таблица фильмов? Какова мощность каждого из предлагаемых индексов? – cschneid
Все годы меньше 1990 мм. Я думаю, что использование слова каждый из них исправит неправильно.«Каждый год меньше 1990 года» – daniel