[quot tanglir]
| Ваяс |
|---|
| А с иннерджойн, например. |
Он тогда вообще больше двух минут выполняется, и почему так происходить я понять не могу.
Вообще всего где то млн записей в основной таблице, и по 300 килозаписей в других таблицах, там используется справочник кладр, но у меня вообще виснит все безбожно, если я связываю эти записи. Но если делать выборку по всем (как я уже сказал их больше млн) записям то все просто останавливается.
Весь запрос формируется динамически и он примерно от 40 до 400 строк собирается, но там все типовое. а вот основное это вот
SELECT
obj.id, UNIX_TIMESTAMP(obj.date), obj.city_id, obj.city,
obj.square, obj.square_live, obj.storeys, obj.floor,
obj.square_kitchen, obj.microarea, obj.street, obj.house, obj.roomscount,
obj.price_all, (area.name) raion, (microarea.name) microraion,
(material.name) material, (housetype.name) house_type, house.construct_year
FROM an_objects obj
LEFT JOIN mlt_adr_area area
ON area.id = obj.area_id
LEFT JOIN mlt_adr_microarea microarea
ON microarea.id = obj.microarea_id
LEFT JOIN an_housetypes housetype
ON housetype.id = obj.housetype_id
LEFT JOIN an_materials material
ON material.id = obj.material_id
LEFT JOIN mlt_adr_house house
ON house.street_id = obj.street_id
WHERE livedays > 0 AND type_id = 1 AND rubric_id = 1 AND obj.street LIKE '%%'
AND IF('' = '', true, obj.floor = 5)
AND IF('' = '', true, obj.storeys = 16)
AND IF('' = '', true, obj.house LIKE '2%')
AND IF('' = '', true, obj.price_all BETWEEN 2450 AND 5200)
AND
CASE
WHEN '' = '' THEN true
WHEN '1' < 5 THEN obj.roomscount = '1'
WHEN '1' >= 5 THEN obj.roomscount >= '1'
END
GROUP BY id ORDER BY date ASC