Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Очень медленно работает выборка INNER JOIN - MySQL / 11 сообщений из 11, страница 1 из 1
18.02.2017, 14:37
    #39407133
bgraf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень медленно работает выборка INNER JOIN - MySQL
Добрый день!
У меня есть таблица компании, таблица недвижимости и таблица с параметрами недвижимости.
При выборе недвижимости, например квартиры на съем, пользователь может указать параметры по которым он ее ищет.
Есть два типа параметров, select и radio , т.е. что-то выбирается из списка select,а что-то путем нажатия на radio.
Чтобы таблицы были не переполнены я просто разнес данные по двум таблицам в зависимости от типа параметра.
Вот так выглядит мой селект.

SELECT names.name_ru,
real_estate.price_real_estate,
names.uniq_id,
names.name_en,
real_estate.id_real_estate
FROM (company_names as names, company_real_estate as real_estate)
INNER JOIN real_estate_properties_select as p_select2 on real_estate.id_real_estate = p_select2.id_real_estate
INNER JOIN real_estate_properties_select as p_select4 on real_estate.id_real_estate = p_select4.id_real_estate
INNER JOIN real_estate_properties_select as p_select6 on real_estate.id_real_estate = p_select6.id_real_estate
INNER JOIN real_estate_properties_select as p_select7 on real_estate.id_real_estate = p_select7.id_real_estate
INNER JOIN real_estate_properties_radio as p_radio0 on real_estate.id_real_estate = p_radio0.id_real_estate
INNER JOIN real_estate_properties_radio as p_radio1 on real_estate.id_real_estate = p_radio1.id_real_estate
INNER JOIN real_estate_properties_radio as p_radio3 on real_estate.id_real_estate = p_radio3.id_real_estate
INNER JOIN real_estate_properties_radio as p_radio5 on real_estate.id_real_estate = p_radio5.id_real_estate
INNER JOIN real_estate_properties_radio as p_radio8 on real_estate.id_real_estate = p_radio8.id_real_estate
INNER JOIN real_estate_properties_radio as p_radio11 on real_estate.id_real_estate = p_radio11.id_real_estate
INNER JOIN real_estate_properties_radio as p_radio13 on real_estate.id_real_estate = p_radio13.id_real_estate
INNER JOIN real_estate_properties_radio as p_radio14 on real_estate.id_real_estate = p_radio14.id_real_estate
INNER JOIN real_estate_properties_radio as p_radio25 on real_estate.id_real_estate = p_radio25.id_real_estate
WHERE names.uniq_id = real_estate.uniq_id
and real_estate.real_estate_type = 1
and real_estate.sale_rent = 0
and p_select2.id_propertie = 3
and p_select2.select_value = 2
and p_select4.id_propertie = 5
and p_select4.select_value = 2
and p_select6.id_propertie = 7
and p_select6.select_value = 1
and p_select7.id_propertie = 8
and p_select7.select_value = 1
and p_radio0.id_propertie = 1
and p_radio0.radio_value = 0
and p_radio1.id_propertie = 2
and p_radio1.radio_value = 1
and p_radio3.id_propertie = 4
and p_radio3.radio_value = 1
and p_radio5.id_propertie = 6
and p_radio5.radio_value = 1
and p_radio8.id_propertie = 9
and p_radio8.radio_value = 1
and p_radio11.id_propertie = 12
and p_radio11.radio_value = 1
and p_radio13.id_propertie = 14
and p_radio13.radio_value = 1
and p_radio14.id_propertie = 15
and p_radio14.radio_value = 1
and p_radio25.id_propertie = 144
and p_radio25.radio_value = 1


Это пример максимальной опции параметров при выборе недвижимости, и так я получаю ответ от сервера TIME OUT (((, т.е. время на обработку такого селекта превышает допустимое ((((.
При меньшем, скажем в половину раз, работает и даже я бы сказал быстро, относительно быстро.
Помогите пожалуйста оптимизировать этот огромный селект.
Очень прошу не посылайте меня к NoSQL решениям, на данном этапе я не могу поменять архитектуру.
СПАСИБО Вам всем !!!!
...
Рейтинг: 0 / 0
18.02.2017, 19:25
    #39407255
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень медленно работает выборка INNER JOIN - MySQL
DDL мы что, сами должны придумать? В студию!
...
Рейтинг: 0 / 0
18.02.2017, 19:51
    #39407272
bgraf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень медленно работает выборка INNER JOIN - MySQL
Akina,

Простите, Вам надо create таблиц? А зачем?
...
Рейтинг: 0 / 0
18.02.2017, 22:03
    #39407306
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень медленно работает выборка INNER JOIN - MySQL
bgraf.
Очень прошу не посылайте меня к NoSQL решениям, на данном этапе я не могу поменять архитектуру.
СПАСИБО Вам всем !!!!

да иди ты к НоСкуЭлью!
...
Рейтинг: 0 / 0
18.02.2017, 22:06
    #39407307
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень медленно работает выборка INNER JOIN - MySQL
bgraf,

вообще, такие запросы очень сложно оптимизировать, надо знать расклад данных,
у тебя там много таблиц, надо значит все, чтобы разобраться.
...
Рейтинг: 0 / 0
18.02.2017, 23:20
    #39407325
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень медленно работает выборка INNER JOIN - MySQL
bgrafAkina,

Простите, Вам надо create таблиц? А зачем?

а действительно, зачем нам это все?
это ж тебе надо запрос оптимизировать...
вот сам и старайся
...
Рейтинг: 0 / 0
19.02.2017, 00:39
    #39407343
bgraf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень медленно работает выборка INNER JOIN - MySQL
MasterZiv,

Да где же здесь много таблиц их 4 всего . Ребят, давайте я не буду тратить ничьё время. Уверен что есть форумчане которые сталкивались с проблемой как у меня. Кто как решал? Сам знаю что много join на одну таблицу плохо, но выхода у меня нет. Спасибо за понимание и прошу пропустите мой вопрос если Вы не сталкивались с решением подобного
...
Рейтинг: 0 / 0
19.02.2017, 07:30
    #39407365
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень медленно работает выборка INNER JOIN - MySQL
bgraf,
ты предлагаешь гадать, здесь к этому не обучены.
только при наличии фактов дают решения
...
Рейтинг: 0 / 0
19.02.2017, 20:44
    #39407514
bgraf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень медленно работает выборка INNER JOIN - MySQL
Спасибо всем за помощь!
Вот одно из решений которым можно воспользоваться
SELECT names.name_ru,
real_estate.price_real_estate,
names.uniq_id,
names.name_en,
real_estate.id_real_estate
FROM company_names as names
INNER JOIN company_real_estate as real_estate on names.uniq_id = real_estate.uniq_id
INNER JOIN (
select id_real_estate
from real_estate_properties_select
where (id_propertie, select_value) IN((3,2),(5,2),(7,1),(8,1))
group by id_real_estate
having count(1)=4
) p_select on real_estate.id_real_estate = p_select.id_real_estate
INNER JOIN (
select id_real_estate
from real_estate_properties_radio
where (id_propertie, radio_value) IN((1,0),(2,1),(4,1),(6,1),(9,1),(12,1),(14,1),(15,1),(144,1))
group by id_real_estate
having count(1)=9
) p_radio on real_estate.id_real_estate = p_radio.id_real_estate
WHERE real_estate.real_estate_type = 1
and real_estate.sale_rent = 0
...
Рейтинг: 0 / 0
19.02.2017, 21:42
    #39407535
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень медленно работает выборка INNER JOIN - MySQL
. Уверен что есть форумчане которые сталкивались с проблемой как у меня. Кто как решал?

так проблема типичная, но универсального решения её нет, ее надо решать в контексте
понимания статистики данных, структуры таблиц и предметной области.

Сам знаю что много join на одну таблицу плохо, но выхода у меня нет.

нет, много join - это ни плохо, и ни хорошо. иногда и один join плохо, иногда и 40 ничего такого страшного.
...
Рейтинг: 0 / 0
19.02.2017, 22:08
    #39407540
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень медленно работает выборка INNER JOIN - MySQL
Да где же здесь много таблиц их 4 всего

вообще-то у тебя 15 таблиц, если я немного не отчитался...
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Очень медленно работает выборка INNER JOIN - MySQL / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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