![]() |
|
Модераторы: LSD |
![]()
|
|
| gcc |
|
||||||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
была ткая тема: http://forum.vingrad.ru/forum/topic-52054/unread-1.html
Что быстрее? 1 cлучай:
2 cлучай:
а как это в PgSQl есть база 10гиг DBmail VDSManager t1
t2 ничего нут в индексах |
||||||
|
|||||||
| Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: 2 Всего: 72 |
Во-первых, должны быть равнозначны. Проверь генерируемые запросы через EXPLAIN <текст_запроса>.
Во-вторых, почему бы не заменить внешний джойн на внутренний, это проще и понятнее для чтения:
Слово INNER можно опустить, тип джойна внутренний по умолчанию, если не указано иначе. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 3 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
на всех программа которых я видел на php+MySQL везде стоит LEFT JOIN иногда WHERE, на Oracle INNER JOIN
INNER JOIN - это тоже самое что срванить и через WHERE, если я правильно понял тогда переделаю на INNER JOIN Это сообщение отредактировал(а) gcc - 19.8.2009, 08:39 |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 2 Всего: 44 |
удалил.
Это сообщение отредактировал(а) DimW - 19.8.2009, 09:31 |
|||
|
||||
| Akina |
|
||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 3 Всего: 454 |
Совсем не то же самое... вот, например, выдержка из справки по MySQL
Если почитать ещё и посравнивать - выяснится, что LEFT/RIGHT JOIN выполняется как INNER JOIN плюс дополнительные прибабахи. Которые процесс, ясен пень, не ускоряют. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 2 Всего: 44 |
||||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 3 Всего: 454 |
Вот пусть и работает. Если автору это действительно нужно, он пойдёт на сайт мускула и сам почитает. Или найдёт аналогичный раздел в документации на свою СУБД. Мне оно сто лет не надо... А если ему влом - может поверить на слово. Или не поверить. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 2 Всего: 44 |
речь не о том кому влом, а кому нет.
речь о том что ваш ответ: на вопрос:
не верен, так как обрабатываться оптимизатором должен одинаково, исключением может быть только глюкавость самого оптимизатора. |
|||
|
||||
| Akina |
|
||||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 3 Всего: 454 |
Прочитайте ещё раз.
абсолютно то же (план исполнения должен быть идентичен), что и
но вовсе не то же самое, что
В третьем варианте работы серверу будет больше - не думаю, что оптимизатор сможет правильно привести этот запрос к одному из первых двух. Так вот именно эту неэквивалентность я и показываю. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||||
|
|||||||
| DimW |
|
||||||||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 2 Всего: 44 |
создаем таблицы и заполняем их данными(СУБД оракл):
выполняем первый запрос:
смотрим план запроса:
второй запрос:
план:
третий запрос:
план:
из преведенных планов видно что они идентичны. статистику выкладывать не буду, поверьте мне на слово - она тоже совпадает. не нужно данный пример расценивать как руководство к действию т.к. пример был приведен из конкретной СУБД конкретной версии! |
||||||||||||||||
|
|||||||||||||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 3 Всего: 454 |
Если не влом - план для последнего запроса, но без where, не затруднит? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| DimW |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 2 Всего: 44 |
если что: Oracle9i Enterprise Edition Release 9.2.0.8.0 |
||||||
|
|||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 3 Всего: 454 |
Умный, собака
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 2 Всего: 44 |
||||
|
||||
| gcc |
|
||||||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
это без разницы абсолютно а если так: тоже?
|
||||||
|
|||||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
забыл сказать, что тестировать нету времени, надо чтобы уже всё завтра или после завтра работало
(если бы было времято протестировал бы всё) |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 3 Всего: 454 |
gcc, для меня всегда LIMIT без ORDER BY был загадкой... пофиг что, лишь бы с ног валило? ... но это так, в качестве оффтопа.
Запрос, кроме корректности и валидности, должен быть ещё и читаем (т.е. сопровождаем). Третий вариант явно не катит, а из двух первых выбирай любой. Индексы в данном случае важнее формы запроса. PS. Счас вроде в политике развития SQL есть движуха от связи к отбору... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Zloxa |
|
||||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 3 Всего: 161 |
Я тоже не поверил, перепроверять пришлось Не так уж и видно этого из приведенных, ну разве что если уж очень наметанным глазом смотреть. У меня не такой. Я созерцая твой план долго вспоминал, умеет ли оракля фильтр совмещать c NL (как он это делаяет для FTS), а то что NL и NL OUTER это суть разные опарации, вообще для мея открытием стало Прости уж за буквоедство мне кажется так лучше видно будет План когда оракля смог одуплить что третий запрос эквивалентен inner:
План, когда мы малость подзапутали ораклю, так чтобы он этого не одуплил:
PS Сорри за оффтоп. Добавлено @ 16:13 Если так то тоже. Но это плохой тон. Есть критерии объединения, они указываютя в конструкции join есть критерии отбора(фильтра),они указываются в конструкции where. В случае с inner join результаты соединения и филтрации совпадают и предикаты могут быть прописаны как в join кляузе так и в where, однако если критерии объединения спустить в where, то это может проканает как old style join, но описывать фильтр в join это обсфукация в чистом виде. Это сообщение отредактировал(а) Zloxa - 28.8.2009, 09:05 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
||||
|
|||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 2 Всего: 44 |
да, полностию согласен - хотел минимизировать колличество ненужной инфы не в оракловой ветке а я вот думаю куда ты запропостился, оракл смакуют, а от тебя ни слова. видимо сезон отпусков. вообще твои замечания и уточнения вселяют еще большую уверенность в моих выводах и догадках, СПАСИБО! Добавлено через 6 минут и 26 секунд FTS это full table scan? |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 3 Всего: 161 |
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 2 Всего: 44 |
ок, понял.
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PostgreSQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |