В Интернете пишут, что MySQL хранит TEXT как ссылку на собственно строки. До поры до времени я об этом и не задумывался. Теперь ситуация такая:
Есть таблица в пару гигабайт. Почти все занимают многочисленные текстовые строки (text). Все что нужно в них искать имеется в FULLTEXT. Но иногда требуется полный скан таблицы, или почти полный, при поиске по нескольким int полям. Плюс сортировка. Индексы тут не помогут - очень низкая селективность (30% или больше). Выход вроде бы нашел - расставить костыли, что бы выборка происходила с использованием индекса по полю из order by (оно и логично). Но речь сегодня про full scan.
Недавно заглянул я в файлы MYD. И был опечален — все строки идут внутри данных. В результате для поиска по двум цифровым колонкам MySQL обходит все чертовы гигобайты (хотя выборка идет в два этапа: сначала лишь уникальный ключ). Как же так?
Я уже было начал пилить таблицу на части, несмотря на то, что в доке это не рекомендуют делать. Может ключик какой нужен? Или все же распиливать?
Я не прочь выслушать и преимущества в таковой ситуации PostgreSQL, но только аргументированно.