2016-01-22 4 views
0

Учтите, что таблица имеет 2 колонки,производительность запросов - Brain тизер

  1. column_1 имеет 60% различных значений и column_2 имеет 40% различных значения.
  2. Оба имеет тот же тип данных, скажем, число

Если один должен применять индексы в этой таблице, какой столбец он должен выбрать индексировать? Зачем?

+1

Теория? Используются теги dbms. – jarlh

+0

, если вы часто используете оба этих столбца для соединения и т. Д., То оба :) – Robert

+2

Я думаю, что это больше связано с тем, как часто вы ссылаетесь на столбцы в членстве join или where, и меньше связаны с мощностью уникальных значений. Мощность может помочь решить, какой тип индекса (т. Е. Растровое изображение vs btree) использовать, но не использовать его или нет. – Hambone

ответ

2

Наиболее важным соображением для создания индекса является поиск по этому полю, поэтому тип данных не имеет значения.

Теперь, когда более четкие значения более эффективны, это индекс, потому что вы быстрее отбрасываете строки. Если большинство строк одинаковы индекс будет таким же, как FULL SCAN

Так что если у вас есть querys как

SELECT * FROM Table WHERE fieldA = Value; 

SELECT * FROM Table WHERE fieldB = Value; 

Вы хотите два индекса, по одному для каждого поля

Но если вы есть querys как

SELECT * FROM Table WHERE fieldA = Value 
         AND fieldB = Value; 

Вы хотите Composte индекс с обоих полей (FieldA, FieldB)

Последний наконечник, если вы хотите вернуть одно значение на ваш выбор

SELECT fieldB FROM Table WHERE fieldA = Value; 

Вы также хотите, композитный индекс, потому что вы будете искать индекс для значения и не должны сделать поиск на столе, чтобы получить значение fieldB потому что уже по индексу.

+0

вы правильно поняли «более четкие значения более эффективны - это индекс, потому что вы быстрее отбрасываете строки. Если большинство строк одинаковы, индекс будет таким же, как и FULL SCAN», –

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