![]() |
|
Модераторы: 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. |
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |