Как получить индексированные столбцы таблицы в базе данных SQLite

Я создал индекс для столбца MyColumn в таблице MyTable в базе данных SQLite.

CREATE INDEX "MyIndex" ON "MyTable" ("MyColumn")

используя этот запрос, я могу получить список индексов:

SELECT name 
FROM sqlite_master 
WHERE type = 'index';

----------------
MyIndex

Но как мне получить список столбцов, связанных с этими индексами?

В моем случае MyIndex: MyColumn


person Vahid    schedule 28.10.2020    source источник
comment
Вы можете использовать ту же таблицу sqlite_master для получения определения индекса, а затем проанализировать его. См. sqlite_master документацию.   -  person Brian Drake    schedule 28.10.2020


Ответы (1)


Я предполагаю, что вы ищете это:

PRAGMA index_info('MyIndex');

Вы также можете получить индексы таблиц, используя:

PRAGMA index_list('MyTable');

Подробнее в этом прекрасном руководстве

person Athanasios Kataras    schedule 28.10.2020
comment
Спасибо, это работает. И я могу выполнить этот запрос из С#, как и другие запросы SQL? - person Vahid; 28.10.2020
comment
Конечно, посмотрите примеры здесь: csharp.hotexamples.com/examples/SQLite.NET/SQLiteClient/Execute/ - person Athanasios Kataras; 28.10.2020
comment
Стоит ли полагаться на PRAGMA? «Конкретные операторы прагмы могут быть удалены, а другие добавлены в будущих выпусках SQLite. Гарантии обратной совместимости нет». «Сообщения об ошибках не генерируются, если выдается неизвестная прагма. Неизвестные прагмы просто игнорируются. Это означает, что если в операторе прагмы есть опечатка, библиотека не сообщает об этом пользователю». - person Brian Drake; 28.10.2020
comment
Итак, какова альтернатива? У всех разновидностей sql есть свои плюсы и минусы. Вы можете использовать только те инструменты, которые вам даны. - person Athanasios Kataras; 28.10.2020
comment
@AthanasiosKataras Смотрите мой комментарий к вопросу. Я не написал правильный ответ, потому что вопрос помечен как C#, с которым я не знаком. - person Brian Drake; 28.10.2020