Нужен ли дополнительный первичный ключ SQLite для дополнительного столбца? - PullRequest
4 голосов
/ 16 июня 2010

Если я создаю таблицу следующим образом:

CREATE TABLE что-то (column1, column2, PRIMARY KEY (column1, column2));

Ни column1, ни column2 сами по себе не являются уникальными.Тем не менее, я буду выполнять большинство моих запросов в столбце 1.

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

Будет ли какое-либо преимущество в производительности при добавлении UNIQUE INDEX для column1?

Ответы [ 2 ]

1 голос
/ 16 июня 2010

Вы, конечно, не хотите добавлять уникальный индекс в столбец 1, как вы только что сказали:

Ни столбец1, ни столбец2 не являются уникальными.

Еслипервый столбец идет первым, он будет первым в многоколоночном индексе в большинстве баз данных и, следовательно, он, вероятно, будет использоваться.Второй столбец - тот, который может не использовать индекс.Я бы не стал добавлять один во второй столбец, если вы не видите проблем, и снова я бы добавил индекс, а не уникальный индекс, основанный на комментарии, который вы написали выше.

Но в SQL lite должен быть какой-то способ увидеть, чтоон использует, как и большинство других баз данных, верно?Установите Pk и посмотрите, используют ли его запросы только для column1.

1 голос
/ 16 июня 2010

Вероятно, выигрыша в производительности не будет, поскольку запросы к col1=xxx and col2=yyy будут использовать тот же индекс, что и запросы типа col1=zzz, без упоминания col2.Но мой опыт - это только Oracle, SQL Server, Ingres и MySQL.Я не знаю точно.

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