Я пытаюсь индексировать json массивы, где содержимое является строками переменной длины, и я не могу понять, если это возможно, не говоря уже о масштабируемости.
Очень похожий вопрос об индексации JSON данных здесь используется новый индекс с несколькими значениями: Индексирование JSON столбец в MySQL 8
Синтаксис этого вопроса выполняется, но использование CHAR мне не подходит и заканчивается на ошибка в любом случае. После изменения имен и корректировки длины CHAR для моих данных:
ALTER TABLE catalog ADD INDEX idx_30144( (CAST( j_data->>'$."30144"' AS char(250) ARRAY)) );
Я получаю эту ошибку
1034 - Incorrect key file for table 'catalog'; try to repair it
Пробую это:
ALTER TABLE catalog ADD INDEX idx_30144( (CAST( j_data->>'$."30144"' AS varchar(250) ARRAY)) );
Выдает эту ошибку:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'varchar(250) ARRAY)) )' at line 1
Это таблица InnoDB, поэтому очевидно, что ошибка 1034 не является точной. Это завершается примерно за 2 секунды, поэтому, пока в может не хватает места, это происходит слишком быстро, чтобы увидеть это, и на диске свободно 350 ГБ.
У меня более 200 JSON таких узлов, которые я хотел бы проиндексировать, в идеале. Если это огромная память, я могу быть доволен их подмножеством, но мне нужно знать, возможно ли это в первую очередь.