MySQL «SELECT DISTINCT» Эффективность для очень больших таблиц

У меня есть очень большая таблица (миллионы записей), содержащая примерно 8 полей в качестве первичного ключа. для простоты скажем, что таблица выглядит так:

    key_1 | key_2 | key_3 | ... | key_8 | value

учитывая значение для key_1, мне нужно получить все возможные значения для key_2, key_3, ..., key_8 что-то вроде следующих строк:

    SELECT DISTINCT key_2 FROM table1 WHERE key_1 = 123;
    SELECT DISTINCT key_3 FROM table1 WHERE key_1 = 123;
    ...
    SELECT DISTINCT key_8 FROM table1 WHERE key_1 = 123;

Моя проблема в том, что этот запрос значительно медленнее, чем мне нужно, а данные в этой таблице довольно постоянны и редко обновляются (раз в несколько дней). Также table_1 может быть медленным подзапросом. Если не считать создания дополнительной таблицы в базе данных и ее ручного обновления каждый раз при обновлении базы данных, есть ли другое решение, которое может дать мне быстрые результаты. Мне нужно, чтобы он работал на нескольких сеансах MySQL.

7
задан Martin Vseticka 21 October 2015 в 08:54
поделиться