|
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 11
|
|
Очень долго выполняется запрос26.11.2013, 18:41. Показов 10240. Ответов 26
Метки нет (Все метки)
Запрос выполняется минут десять. Разве так должно быть?
Обрисовываю ситуацию. Берутся две главные таблицы и одна связующая со связями многие ко многим. Главные таблицы состоят из двух колонок. Одна - ключ, а вторая - текст. Первая таблица 2000 строк. Вторая - 10000 строк. Связующая таблица состоит из ключей первой и второй. Но она гигантская по размерам - 500'000 строк. Сама задача проста. Связать первую и вторую таблицы если из первой таблицы запросу соответствуют 1000 строк, а из второй 5000 строк. Последовательность примерно такая. Сначала запрос к каждой строке первой таблицы. Это 2000 операций. Из них останутся 1000 строк. Затем самое страшное. 1000 строк полученных сравниваются с 500'000 строк связующей таблицы. Это значит 1000 х 500'000 = 500'000'000 операций. В итоге останется 5000 строк в промежуточной таблице. Дальше попроще, выбираем из второй таблицы по полученному ключу. Это еще 5000 х 10'000 = 50'000'000 операций. В итоге сумма канечно устрашающая 550'002'000. Это только операции сравнения. Операций считывания посчитать проще. Разом все 2000 строк из первой, разом все 500'000 строк из связующей и разом все 10'000 строк из второй. Причем разом они должны намного быстрее делаться, чем по отдельности. Вопрос знатокам, а сколько у вас ориентировочно будет выполняться такой запрос? И еще какие есть способы ускорить процесс не изменяя базы данных?
0
|
|
| 26.11.2013, 18:41 | |
|
Ответы с готовыми решениями:
26
Запрос выполняется очень долго |
|
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
|
| 28.11.2013, 15:18 | |
|
0
|
|
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
||||
| 28.11.2013, 15:44 | ||||
0
|
||||
|
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 11
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 28.11.2013, 22:09 [ТС] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Большая база уже удалена. Есть тока уменьшенная. Пример проблемного запроса.
При запросе плана выполнения запроса выдает:
Для большой базы думаю план должен быть такой же. И даже на урезаной базе производительность очень низкая.
0
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
||||||
| 29.11.2013, 08:33 | ||||||
|
Простите, не узнаю вас в гриме... (с)
Версию SQL озвучьте? В плане не отражено использование индексов для поиска данных, поэтому, вероятнее всего, ускорить запрос поможет индекс:
0
|
||||||
|
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 11
|
|
| 29.11.2013, 12:48 [ТС] | |
|
Версия SQLite. Индексов нет, это точно. А вот в таблице tt3 именно 2679 записей. Самому интересно как так. Могу тока предположить что когда то максимальное число записей в этой таблице было именно 22439. Но они уже удалены.
Если отойти от индексов. Разве без них должен именно так медленно выполнятся данный запрос.
0
|
|
|
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
||
| 29.11.2013, 13:09 | ||
|
Реляционная модель обеспечивает получение результирующего множества данных, соответствующего критериям отбора. О времени получения результата ничего не говорится. Техническая реализация обеспечивает построение оптимального плана выполнения запроса, учитывающего ожидаемое количество записей в результате обработки, наличие и селективность индексов, возможность параллельной обработки... В общем много чего учитывает SQL при разборе запроса, в результате формирует план, позволяющий выполнить запрос с минимальной нагрузкой на сервер. Ваша задача - предоставить оптимизатору возможность построить действительно быстрый план обработки. Добавлено через 2 минуты сделайте индекс и потом снова покажите план выполнения запроса?
0
|
||
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
||
| 29.11.2013, 13:29 | ||
0
|
||
| 29.11.2013, 13:29 | |
|
Очень долго выполняется запрос SQL
Долго выполняется запрос к БД
MS SQL. Запрос долго выполняется Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|