Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
15.07.2003, 17:00
|
|||
---|---|---|---|
|
|||
оптимизация таблицы/запросов |
|||
#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:37
|
|||
---|---|---|---|
оптимизация таблицы/запросов |
|||
#18+
конструкция like '%чтото%' заставляет сервер просматиривать все записи одна за другой. А fulltext index вас не спасет? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.07.2003, 23:02
|
|||
---|---|---|---|
оптимизация таблицы/запросов |
|||
#18+
если h_from - всегда один e-mail то можно наверное h_from like 'email@some.ru' и объявить его как varchar(32) думаю 32 символа для 1 мыла достаточно. и fulltext попробуй ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=47&mobile=1&tid=1855896]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 162ms |
0 / 0 |