Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Медленный запрос для 2 больших таблиц 
:(
    Опции темы
polin11
Дата 30.6.2018, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 6.6.2015

Репутация: нет
Всего: нет



Есть 2 таблицы Table1 (1 млн записей) и Тable2 (10 млн записей)
Свзяь между таблицами один ко многим.
Нужно вытащить определнное колчичество записей, например 100 из Table1, 
следующим запросом:
Код

SELECT *
FROM Table1
WHERE Field1 IN (SELECT Field1 FROM Table2  WHERE Field2 = 'val1' GROUP BY Field1 )
AND Field2='val2'
ORDER BY Field3
LIMIT 100

Можно переписать так:
Код

SELECT *
FROM Table1
INNER JOIN Table2 ON Table1.Field1=Table2.Field1
WHERE Table2.Field2 = 'val1'
AND Table1.Field2='val2'
GROUP BY Table1.Field1
ORDER BY Table1.Field3
LIMIT 100


Но оба запроса выполняются медленно.
Хочется из вложенного запроса делать выборку не всей таблицы Table2 по фильтру Field2 = 'val1',
а только 100 записей, например 
Код

SELECT *
FROM Table1
WHERE Field1 IN (SELECT Field1 FROM Table2  WHERE Field2 = 'val1' GROUP BY Field1 LIMIT 100)
AND Field2='val2'
ORDER BY Field3

но так как есть условие Table1.Field2='val2', то этот запрос неверный. Может есть 
стандартное решение аналогичной  проблемы?
PM MAIL   Вверх
Akina
Дата 30.6.2018, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 453



Цитата(polin11 @  30.6.2018,  19:52 Найти цитируемый пост)
Можно переписать так

Нельзя. полученные запросы неэквивалентны.
Цитата(polin11 @  30.6.2018,  19:52 Найти цитируемый пост)
Может есть 
стандартное решение аналогичной  проблемы? 

Перепишите первый запрос на WHERE EXISTS.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0980 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.