Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / И снова ускорение запросов / 4 сообщений из 4, страница 1 из 1
04.11.2013, 14:55:29
    #38451888
RJ45
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И снова ускорение запросов
поискал по форуму - куча тем с просьбой помочь в ускорении запроса, но, видимо, решение индивидуально для каждого запроса, поэтому вот мой вопрос на эту тему:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
select Firm_Address.id, Firm_Address.firmId, Firm_Address.addressId, Firm_Address.phones, Firm_Address.info,
  Firm_Address.workingHours, Firm_Address.position, Firm_Address.updateDate, Firm_Address.updateUserId, Address_Address.house as house,
  Address_Address.description as houseInfo, Address_Street.title as streetTitle, Address_Street.oldTitle as streetOldTitle,
  Address_Street.type as streetType, Address_District.title as districtTitle, Address_City.title as cityTitle, Firm.title as firmTitle,
  Firm.keywords as firmKeywords, Firm.pay as firmPay
from
 Firm_Address
inner join
 Address_Address on Firm_Address.addressId = Address_Address.id 
inner join
 Address_Street on Address_Address.streetId = Address_Street.id 
left join
 Address_District on Address_Street.districtId = Address_District.id 
inner join
 Address_City on Address_Street.cityId = Address_City.id 
inner join
 Firm on Firm.id = Firm_Address.firmId 
inner join
 Firm_Profile on Firm_Profile.firmId = Firm.id 
where
  (Address_City.title like ?
  or Address_Street.title like ?
  or Address_Street.oldTitle like ?
  or Address_District.title like ?
  or Address_Address.house like ?
  or Address_Address.description like ?
  or Firm_Address.phones like ?
  or Firm_Address.info like ?
  or Firm_Address.workingHours like ?)
  and Firm_Profile.descriptionHelp like ?
  and Firm_Profile.onHelp = ?
  and Firm.onHelp = ?
order by Firm.pay desc, Firm.title asc

Да, запрос очень громоздок, но такой уж он выходит.
Иногда слишком уж долго ищет (настолько долго, что получаю gateway timeout). Какие бы индексы добавить, чтобы пошустрее стало?
...
Рейтинг: 0 / 0
04.11.2013, 15:04:23
    #38451910
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И снова ускорение запросов
А что за знаки вопроса в LIKE-ах? Что туда подставляется?

Покажите план запроса.
Почему одна табличка подлкеивается иначе - Address_District через left join ? При наличии в секции WHERE условия на эту таблицу left join превращается в просто join.

А вообще, подозреваю, что индексами ситуация не лечится. В общем случае LIKE-и индексы для отбора записей не используют, в них все может упереться. Но нужно проверить, что есть все индексы для join-ов.
...
Рейтинг: 0 / 0
04.11.2013, 15:11:16
    #38451924
RJ45
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И снова ускорение запросов
miksoftА что за знаки вопроса в LIKE-ах? Что туда подставляется?
Покажите план запроса.
Почему одна табличка подлкеивается иначе - Address_District через left join ? При наличии в секции WHERE условия на эту таблицу left join превращается в просто join. вместо ? подставляется что-то типа '%шевченк%' - всегда % с двух сторон и внутри одно слово - название улицы, или часть названия улицы.
Address_District джоинится иначе, потому что по ТЗ может быть улица, как с привязкой к району, так и без нее (т.е. связка Address_Street - Address_District) может отсутствовать
...
Рейтинг: 0 / 0
04.11.2013, 15:30:38
    #38451951
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И снова ускорение запросов
miksoftПри наличии в секции WHERE условия на эту таблицу left join превращается в просто join.Возможно, тут я не совсем прав. Впрочем план запроса все равно нужен.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / И снова ускорение запросов / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]