Вопрос по показателям - PullRequest
       7

Вопрос по показателям

3 голосов
/ 11 сентября 2011

Если у меня есть таблица со следующими столбцами в качестве первичного ключа: Username, Title, Start Date, то база данных автоматически создаст для нее индекс.

  1. Если я хочу выбрать по имени пользователя, идата начала для запроса ..... будет ли он использовать индекс выше, ИЛИ мне нужно указать дополнительный индекс?
  2. Если заголовок и дата начала идентифицируются однозначно, но я также добавлю имя пользователя в первичный ключ, будет личто делает его суперключем?

1 Ответ

4 голосов
/ 11 сентября 2011

1) Если я хочу выбрать по имени пользователя и дате начала запроса ..... будет ли он использовать индекс выше, ИЛИ мне нужно указать дополнительный индекс?

У вас сложное условие, скажем так:

username = 'blah-blah-blah' AND startdate > '01.01.2010'

Если PK вашей таблицы определен следующим образом:

PRIMARY KEY (Username, Title, StartDate)

Тогда индекс будет использоваться для первой части, включающей поле имени пользователя.Значения начальной даты будут оцениваться в естественном порядке.

Если вы хотите, чтобы индекс использовался для обеих частей сложного условия, либо создайте дополнительный индекс для начальной даты, либо измените порядок полей в PK:

PRIMARY KEY (Username,  StartDate, Title)

2) Если заголовок и дата начала идентифицируются однозначно, но я также добавляю имя пользователя к первичному ключу, это сделает его суперключем?

Хорошей практикой является не злоупотреблятьуникальный индекс с дополнительными полями.В вашем случае создайте PK для заголовка и даты начала, а затем (если необходимо) создайте отдельный индекс для поля имени пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...