![]() |
|
Модераторы: LSD |
![]()
|
|
| Pankon |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 739 Регистрация: 2.6.2005 Репутация: нет Всего: 5 |
Какой SQL-запрос работает лучше(быстрее) и почему
Первый
|
||||
|
|||||
| Darhazer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 28.9.2005 Где: HellCity (Sofia, Bulgaria) Репутация: нет Всего: 29 |
Запроси в общем одинаковие
-------------------- I'm a wheel, I'm a wheel, I can roll, I can feel But you can't stop me turning 'Cause I'm the sun, I'm the sun, I can move, I can run But you'll never stom me burning |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 13 Всего: 454 |
Первый лучше и быстрее. Особенно если поля связи индексированы. Ибо в первом случае связывание, а во втором - декартово произведение.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 6 Всего: 35 |
Akina, ты не прав.
Это два идентичных запроса. Первый соотвествует более позднему стандарту. Второй, если я не ошибаюсь - стандарт SQL92 -------------------- Никогда не говори никогда |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 8 Всего: 77 |
Угу. Ограничение будет накладываться сразу, декартова взрыва не будет. Когда вовсю работал с СКЛ - везде использовали только такую запись. ИМХО, она удобнее. -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| Pankon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 739 Регистрация: 2.6.2005 Репутация: нет Всего: 5 |
||||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 8 Всего: 77 |
Вторую Неявный иннер джойн - это значит что нету ключевых слов inner join Но функциональность АБСОЛЮТНО та же. И способ выполнения и последовательность действий на сервере та же, что и в первом запросе. Сначала связка таблиц по этому условию, а потом уже выборка результирующего набора -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: нет Всего: 34 |
Я почему-то склонен к ответу Akina'ы.
Протестил на своей базе (несколько млн записей) join разрулил быстрее, хоть и не на много. В среднем 0,8 с. Вообще сам использую Outer join и вообще исключительно join'ы. Синаксис мне их понятней. Да и ошибки проще избежать как в синтаксисе, так и с Null'ами!!!!! |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 8 Всего: 77 |
А время выполнения запроса? как первого так и второго? Если 0,8 - это один процент от времени выполнения запроса + тест был только один - списываем на статистическую погрешность. -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 5 Всего: 252 |
В плане чисто привычки по-моему лучше использовать Inner Join. А ну как тебе потом придётся не только Inner?, но и Left (Right) Join использовать и сиди смотри на запросы тама Where для условия, а тута для связывания. Во запарка-то будет!
|
|||
|
||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: нет Всего: 34 |
В промежутке между 1,5 - 2 с. +разница между запросами. По сути это те же яйца, только в профиль. Эсновная проблема в этом! Добавлено @ 13:22 Именно! |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 13 Всего: 454 |
В случае JOIN-ов WHERE - для условий отбора, а для связывания - ON. Меньше мест для ляпов. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| bas |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 14.8.2002 Где: Молдова, Кишинев Репутация: нет Всего: 2 |
||||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 8 Всего: 77 |
Нууу... приходилось. Первые строки - связка, следующие - условия отбора. В компании, где работал ранее, всё было написано именно в такой форме. И все охотно пользовались. Довольно удобно и читабельно. Прочитал какие ьалицы, представил себе, накидал связки мысленно, отобрал по остальным условиям. Ну да это дело привычки. Ту проблема в том, что человек не знал ничего о "левых-правых" запросах. А не в форме записи. Если человек не может написать ничего о бурильных технологиях, а ему дают готовую подсказку на английском - это не значит что английский лучше - это означает что ОН ПРОСТО НЕ ЗНАЕТ. Можно было с таким же успехом и на русском подсказать. -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: нет Всего: 34 |
Зачет. 1 вариант ИМХО рулит. В случае потери данных сразу видно ошибку в слове Inner. |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 8 Всего: 77 |
Всё рулит У меня знакомый - обожает паскаль. И все синтаксисы, похожие на паскальный. Я - терпеть не могу. Лаконичность си гораздо гораздей Мы решили этот вопрос. Я не суюсь в паскаль, он не обсуждает си и си-производные Вобщем, пошли религиозные войны уже Каждому своё. Шатенки, брюнетки, блондинки... -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
1. Тут дело может быть во времени работы оптимизатора и парсинга запроса. 2. Корректнее всего будет сравнить планы запросов. Например оптимизатор Oracle выдал абсолютно одинаковые планы, на оба этих запроса. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 8 Всего: 77 |
По идее, неплохо бы прогнать несколько десятков раз на препаред стэйтмент и сравнить средние значения -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| Sqlninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 353 Регистрация: 15.5.2006 Где: San Francisco, CA Репутация: нет Всего: 13 |
Это какое-то гониво насчет какой запрос быстрее работает. Все равно парсер каждого сервака приводит запрос к единому виду. И план выполнения у них одинаковый. А нотация без разницы - например на оракле начиная с 9ки поддерживаются всякие джойны, только для того чтобы ANSI соответствовать. А на перформанс это вообще никак не влияет по ходу.
-------------------- It's better to burn out than to fade away. |
|||
|
||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: нет Всего: 34 |
||||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |