|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.06.2018, 18:54 | #1 |
Форумчанин
Регистрация: 07.06.2015
Сообщений: 164
|
Медленный запрос для 2 больших таблиц
Есть 2 таблицы Table1 (1 млн записей) и Тable2 (10 млн записей)
Свзяь между таблицами один ко многим. Нужно вытащить определнное колчичество записей, например 100 из Table1, следующим запросом: Код:
Код:
Хочется из вложенного запроса делать выборку не всей таблицы Table2 по фильтру Field2 = 'val1', а только 100 записей, например Код:
стандартное решение аналогичной проблемы? |
30.06.2018, 19:04 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А какие индексы есть у таблиц?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
30.06.2018, 19:34 | #3 |
Форумчанин
Регистрация: 07.06.2015
Сообщений: 164
|
Я не хочу затрагивать вопрос индексов, пока хочу узнать, можно ли улучшить структуру запроса
|
30.06.2018, 21:51 | #4 |
Участник клуба
Регистрация: 10.08.2010
Сообщений: 1,392
|
А структуру БД не надо показать какие там связь между таблицами ? или вы это тоже не хотите затрагивать ?
E_MAIL: rijgvina7@yahoo.com
|
30.06.2018, 22:46 | #5 |
Форумчанин
Регистрация: 07.06.2015
Сообщений: 164
|
Table1 таблица из 4 полей, Field1 - первичный ключ тип bigint, остальные поля типа text. Связана отношением 1 ко многим с Table2, поле Field1 для второй таблицы внешний ключ тип также bigint.
|
30.06.2018, 22:54 | #6 |
Участник клуба
Регистрация: 10.08.2010
Сообщений: 1,392
|
Не будет это не кто читать .! Надо было начинать предоставить все таблицы в виде Create table...
E_MAIL: rijgvina7@yahoo.com
|
30.06.2018, 23:04 | #7 |
Форумчанин
Регистрация: 07.06.2015
Сообщений: 164
|
Спасибо за неоценимую помощь
|
01.07.2018, 16:14 | #8 |
Участник клуба
Регистрация: 06.04.2009
Сообщений: 1,524
|
От подзапроса лучше избавиться, он неизвестно сколько раз может выполниться, при этом в explain все будет хорошо. На данном этапе без индексов проблему медленности не решить.
Смотрите в explain и проставляете индексы. Если не нравится join, то сделайте два запроса, сначала по table2, а потом по результатам из table1 с помощью where in (...) и т.д. |
10.07.2018, 12:37 | #9 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 977
|
конечно понимаю, что может не помочь, но попробуйте поменять местами условия и убрать бесполезную сортировку (оно вам без разницы как проверяться будет по второй таблице).
Код:
Код:
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
Последний раз редактировалось IliaIT; 10.07.2018 в 12:42. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите составить SQL (ADO, Access) запрос для сравнения двух таблиц. | yorri | БД в Delphi | 12 | 10.02.2018 14:17 |
аналог ВПР для больших таблиц | yurinek | Помощь студентам | 1 | 06.02.2017 15:58 |
Объединение больших таблиц - как ускорить запрос? | supermike | SQL, базы данных | 13 | 30.11.2014 20:51 |
Веб-запрос для экспорта нескольких таблиц с сайта | vunka | Microsoft Office Excel | 10 | 26.07.2013 13:49 |
Направьте в нужное русло. Сравнение двух больших таблиц Excel | hijke | Microsoft Office Excel | 6 | 05.05.2011 13:24 |