postgres запрос выполняется долго
Хочу сделать полнотекстовый поиск на postgres. Создавал индекс gin-
CREATE INDEX "Table_idx"
ON "Table"
USING gin
(to_tsvector('russian_hunspell'::regconfig, "TextOfFile"::text));)
Такой запрос
SELECT "ID", "FileName"
FROM "Table"
WHERE to_tsvector('russian_hunspell', "TextOfFile") @@ to_tsquery ('russian_hunspell', 'Книга')
выполняется 23 секунды, пробовал создать индекс -
CREATE INDEX ON "Table"("TextOfFile");
выводит ошибку-
ОШИБКА: строка индекса требует байт: 4926200, при максимуме: 8191
********** Ошибка **********
ОШИБКА: строка индекса требует байт: 4926200, при максимуме: 8191
SQL-состояние: 54000
Сама идея - в базе есть таблица с 3 колонками: ID, FileName, TextOfFile. Я добавляю разные файлы (размером от 1 кб до 15 мб) через прогу на qt, и внутрь TextOfFile записывается содержимое файла (одна строчка, в ней одна ячейка- это один файл). Если заносить файлы размером свыше 10 мб, то gin долго ищет по ним(23 сек), если попробовать использовать другой индекс, например IndexOnlyScan вместо Req Scan, то при создании индекса, выводить ошибка. (Немного читал про TOAST, особо идей нет. Подскажите как грамотно занести большой текст в ячейку, чтобы потом можно было быстро (1-2 сек) искать в нем что-либо (Пока занес в таблицу 35 строк, это 35 файлов, 34 файла меньше 2 кб и один 12 мб).