|
|
|
| Есть таблица с очень большим кол-вом записей около 70 млн. (линковочная таблица от большого каталога).
Уменьшить их кол-во нельзя, нужны все записи так как по ней ведётся поиск.
Запрос выполняется достаточно долго, около минуты, а возможно и больше.
Я ещё могу подождать, но пользователь ждать не будет и уйдёт со страницы.
Как её можно оптимизировать?
Там всего 3 поля, по двум идёт запрос, а ищется третье(всё в типе int).
И поможет ли её разбиение на меньшие таблицы, скажем по 5 млн. записей?
В этом случае придётся искать последовательно в каждой таблице, пока запись не будет найдена, возможно из за переключений скорость поиска будет больше. | |
|
|
|
|
|
|
|
для: Quies
(09.01.2011 в 03:47)
| | Таблица индексирована? Если индексирована, то каким образом и каким образом выполняется поисковый запрос? | |
|
|
|
|
|
|
|
для: cheops
(09.01.2011 в 09:22)
| | Нет, таблица без индексов. Запрос по 2 полям, без запросов в другие таблицы. | |
|
|
|
|
|
|
|
для: Quies
(09.01.2011 в 03:47)
| | в таких ситуациях приводят запрос и структуру вовлеченных в него таблиц. | |
|
|
|
|
|
|
|
для: Trianon
(09.01.2011 в 13:18)
| | Запрос следующий:
SELECT links FROM laid WHERE typeid=11279 AND gaid=265372;
|
| |
|
|
|
|
|
|
|
для: Quies
(09.01.2011 в 22:00)
| | Создайте индекс по полям typeid и gaid. Скорость должна возрасти значительно. | |
|
|
|
|
|
|
|
для: Quies
(09.01.2011 в 22:00)
| | потребуется составной индекс.
К сказанному cheops'ом я бы добавил, что если диапазон изменения у поля gaid больше, чем у поля typeid, (и при прочих равных) то поле gaid в индекс стоит поместить первым. | |
|
|
|