Индекс SQlite на 2 числовых поля? - PullRequest
0 голосов
/ 20 декабря 2010

У меня есть таблица, к которой я постоянно обращаюсь по 2 int-полям, поэтому хочу, чтобы индекс помог.Нет пишет никогда.Поля int не уникальны.

Какой индекс наиболее оптимален?

Table
  MyIntA
  MyIntB
  SomeTextValue

Запросы всегда выглядят так:

Select  SomeTextValue from MyTable where MyIntA=1 and MyIntB=3

Ответы [ 2 ]

3 голосов
/ 20 декабря 2010

Вы можете добавить индекс на (MyIntA, MyIntB).

CREATE INDEX your_index_name ON MyTable (MyIntA, MyIntB);

Примечание: может быть предпочтительнее сделать эту пару столбцов вашим первичным ключом, если пара столбцов (при рассмотрении вместе) содержит только различные значения и не существует другого очевидного выбора для первичного ключа ,

Например, если ваша таблица содержит только такие данные:

MyIntA  MyIntB
1       1
1       2
2       1
2       2

Здесь и MyIntA, и MyIntB при отдельном рассмотрении не уникальны, поэтому ни один из этих столбцов по отдельности не может использоваться в качестве первичного ключа. Однако пара (MyIntA, MyIntB) уникальна , поэтому эту пару столбцов можно использовать в качестве первичного ключа.

1 голос
/ 20 декабря 2010

Селективность (количество дискретных / различных значений) данных в столбцах MyIntA и MyIntB должна помочь вам решить, должен ли ваш индекс быть (MyIntA, MyIntB), (MyIntB, MyIntA) или просто (MyIntA) или (MyIntB)

Эта ссылка должна помочь, хотя и для другой СУБД

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