Здравствуйте, odesk_worker, Вы писали:
_>Здравствуйте, Smooky, Вы писали:
S>>Здравствуйте, Anton Batenev, Вы писали:
AB>>>Здравствуйте, Smooky, Вы писали:
S>>>> Сделал тестовое приложение, на С++. Вставка в чистую БД 200 000 000 записей заняла 10 часов примерно. S>>>> Вот такой запрос выполняется 28 минут: select count(*) from test_table where msisdn='84537683151';
AB>>>Тип таблицы? msisdn — это текст или все же число и какой результат дал запрос выше (сколько там реально count)?
S>>Тип MyISAM. msisdn — это текст, но поскольку в INT он может не влазить, то тип varchar(11). Результат 600 записей.
_>насколько разные первые N символов в msisdn? Если нет такого, что 99% записей начинаются с трех одинаковых цифр, то можно попробовать сделать индекс по первым N символам (чем больше N, тем больше размер индекса и пересчет его при инсерте). После создания индекса, попробуйте заново загнать весь датасет и засечь, сколько это займет. Будет однозначно больше, вопрос насколько. Основная часть запросо будет только с where msisdn='XXX'? Что говорит show create table `table` ?
Можно попробовать сделать char(11) вместо варчара, но размер на диске тогда еще увеличится по идее.