|
оптимизация таблицы/запросов
|
|||
---|---|---|---|
#18+
есть таблица id INT, h_from VARCHAR(255), h_to VARCHAR(255), body LONGTEXT индексы на id, h_from, h_to основной ключ - id в h_from всегда 1 email адрес, в h_to один или несколько (формат по RFC-822) адресов body - тело письма (может быть довольно большим) в таблице ~40000 записей, на запрос select count(id) from messagebase where (h_from like '%email@some.ru%' or h_to like '%email@some.ru%') уходит больше минуты, загрузка ЦП сервера во время выборки не превышает 40%, свободной памяти несколько сотен mb, файловая система на RAID'e не активна как увеличить скорость выборки? MySQL Distrib 3.23.54, for redhat-linux-gnu (i386) RedHat Linux 2.4.20-9 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2003, 17:00 |
|
оптимизация таблицы/запросов
|
|||
---|---|---|---|
#18+
конструкция like '%чтото%' заставляет сервер просматиривать все записи одна за другой. А fulltext index вас не спасет? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2003, 17:37 |
|
оптимизация таблицы/запросов
|
|||
---|---|---|---|
#18+
если h_from - всегда один e-mail то можно наверное h_from like 'email@some.ru' и объявить его как varchar(32) думаю 32 символа для 1 мыла достаточно. и fulltext попробуй ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2003, 23:02 |
|
|
start [/forum/topic.php?fid=47&fpage=704&tid=1855896]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 314ms |
total: | 452ms |
0 / 0 |