1

Тема: юзання функцій при створенні фільтрованих індексів

чи це взагалі можливо?
принаймні мій SQLiteBrowser3 видає ось таку помилку:
functions prohibited in partial inde
у відповідь на такий запит:

CREATE INDEX Ilen5 ON dTable(word) WHERE LENGTH(word) = 5

2

Re: юзання функцій при створенні фільтрованих індексів

GPT-4 написав:

Створення індексів з функціями у умові в SQLite не підтримується. Це обмеження движка SQLite. Тому ви отримали таку помилку.

Як альтернативний підхід, ви можете створити додаткове поле в таблиці, яке містить довжину слова, а потім створити індекс, який використовує це поле. Ось приклад як це можна зробити:

-- Додавання нового стовпця для зберігання довжини слова
ALTER TABLE dTable ADD COLUMN word_length INTEGER;

-- Оновлення значень нового стовпця
UPDATE dTable SET word_length = LENGTH(word);

-- Створення індексу з використанням нового стовпця
CREATE INDEX Ilen5 ON dTable(word) WHERE word_length = 5;

Таким чином, ви зможете створити фільтрований індекс без використання функцій у умові.

3

Re: юзання функцій при створенні фільтрованих індексів

Пам'ятаєте фільм "Термінатор"?
Там Skynet знищив людство. Спочатку був розроблений як примітивний штучний інтелект.
Все, капці нам.
Вже є аналог GPT-4