Гость
Форумы / SQLite [игнор отключен] [закрыт для гостей] / SQLite и FK / 2 сообщений из 2, страница 1 из 1
14.12.2013, 20:43
    #38500991
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite и FK
Имею таблицу:
Код: sql
1.
2.
3.
4.
CREATE TABLE DocBarCode (
  DocBarCodeID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  DocID INTEGER NOT NULL CONSTRAINT [FK_DocBarCode_DocID] REFERENCES [Doc]([DocID]) ON DELETE RESTRICT ON UPDATE RESTRICT DEFERRABLE
);


Которая связана с таблицей Doc, по полю DocID.

Вопрос:
Как я понял, FK-индексы не задействуются при запросах типа:
Код: sql
1.
2.
3.
SELECT * 
FROM Doc, DocBarCode 
WHERE Doc.DocID=DocBarCode.DocID // <-- ТУТ



И надо создавать дополнительные индекс по полю "DocID", для таблицы "DocBarCode":
Код: sql
1.
CREATE INDEX [IDX_DocID] ON [DocBarCode] ([DocID]);



По крайней мере EXPLAIN QUERY PLAN это "говорит" ...
Я прав ???????????
...
Рейтинг: 0 / 0
14.12.2013, 22:25
    #38501070
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite и FK
FK это вообще не индекс.
Это поле ссылающееся на индекс, но самому ему не обязательно быть индексированным.
Так что да: ручное создание индексов на FK поле можно.
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / SQLite и FK / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]