Коллеги, подключайтесь.
Упрощенная модель такова: таблица POST_ID, KEY, VALUE, которая хранит разные данные для элементов (записей) на сайте.
- (BIGINT(20)) POST_ID – ID для элемента на сайте
- (VARCHAR(30)) KEY – название поля у элемента
- (LONGTEXT) VALUE – значение поля
В таблице может быть несколько строк с одной парой POST_ID и KEY.
VALUE может принимать значения как в один символ, так и в длинные статьи по 4 000 000 знаков.
Мы изначально реализовали хранение, принято везде: например, и Wordpress, и Битрикс хранят такие "пользовательские" данные в одной таблице и точно в таком же формате.
Сейчас возникают опасения, так как подобные выборки выполняются долго:
SELECT POST_ID FROM TABLE WHERE KEY='qwrety' AND VALUE='asdfghjk12345678'
Я подумываю над решением, как это делают с файлами: создать 26 таблиц A, B, C, D... и хранить в каждой KEY начинающийся с соответствующей буквы.
Коллеги, поделитесь опытом – как эту организацию в 250 000 записей можно оптимизировать?