Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
есть таблица хранящая разную информацию о людях, в том числе их ФИО. Фио в трех разных колонках. Запрос может быть как с одним параметром, например отчество, так и с двумя и с тремя. Количество записей близко к миллиону. Есть индексы по этим трем колонкам с длинной 10 символов. Проблема в том что запрос выполняется очень долго.
В експлейне написано что вроде как подхватываются одиночные индексы по мере необходимости.
А с многоколоночным индексом я не совсем понимаю как управляться. Если его создавать для этих трех колонок то какую длину указывать?
Спасибо
Неактивен
В три раза больше?
А вам точно на одиночные колонки нужна длинна в 10 символов? Например, для имени? Много ли у вас разных имен длинной >9 ?
Неактивен
сначала сделал длину 4, но уникальность индекса получилась мягко говоря фиговая. решил увеличить значение.. может я не верно понимаю идиалогию индексов правда.
вообще интересно узнать как правильно хранить фио с уклоном на то что по нему будет интенсивный поиск производиться. в интернетах как то не могу найти к сожалению информацию. больше спорят о том хранить фио в одной колонке, в трех или вообще в разных таблицах. в моем случае думаю выбор трех колонок правильнее будет.
и еще. правильно ли я понял понятие "покрывающего индекса". это когда индекс на всю возможную длину поля или как?
Отредактированно stasuss (02.02.2012 13:31:42)
Неактивен
stasuss написал:
сначала сделал длину 4, но уникальность индекса получилась мягко говоря фиговая. решил увеличить значение.. может я не верно понимаю идиалогию индексов правда.
Правильно понимаете, но увеличивать надо без фанатизма, постепенно, смотря при этом на уникальность (индивидуально для каждой колонки).
Интуитивно, кажется, что 10 для имени перебор.
stasuss написал:
вообще интересно узнать как правильно хранить фио с уклоном на то что по нему будет интенсивный поиск производиться. в интернетах как то не могу найти к сожалению информацию. больше спорят о том хранить фио в одной колонке, в трех или вообще в разных таблицах. в моем случае думаю выбор трех колонок правильнее будет.
Думаю, да.
stasuss написал:
и еще. правильно ли я понял понятие "покрывающего индекса". это когда индекс на всю возможную длину поля или как?
ИМХО, это когда все выбираемые колонки присутствуют в индексе и для выполнения запроса не нужно обращаться к самой таблице.
Неактивен
спасибо за ответы.
но все таки как лучше организовать индексацию? три разных индекса или один?
и какую длину указывать у многоколоночного индекса? например есть три поля по 10 символов, то индекс создавать длинной 30 символов или 10? или еще как то? не совсем понимаю как он создается. конкатенацией или хитрым хешированием всех входящих колонок в одну..
Неактивен
большое спасибо) вы мне очень помогли сегодня)
Неактивен
Страниц: 1