Re[4]: MySQL и производительность
От: odesk_worker  
Дата: 22.11.11 13:50
Оценка:
Здравствуйте, 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) вместо варчара, но размер на диске тогда еще увеличится по идее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.