|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
блядь, просто йобаная классика Именно для таких долбойобов я пишу статьи, но долбойобы, разумеется, хуй их читают ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 21:41 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
блядь, просто йобаная классика Именно для таких долбойобов я пишу статьи, но долбойобы, разумеется, хуй их читают Там моя подпись, так чот ищи сам но в двух словах классическая ошибка - это фильтрация по "правой" таблице при лефт джойне, которая превращает аутер в иннер. если изначально и нужен был иннер, то в нормальных серверах рояли особо не играет. Если оптимизатор говно - рояль может быть второй классический случай - использование дистинкта при неправильной работе с мастер-слейв вместо того чтобы юзать exists (который на самом деле нужен), некто юзает джойн со слейвом, получает мультипликацию хедера, пугается и пиздячит туда дистинкт На самом деле для разовых запросов - практически похуй как ты что там пишешь. Ну поебётся сервер минуту вместо того чтобы выполнить запрос за полсекунды - всем похуй, запрос разовый, лишь бы результат был правильный но если запрос выполняется постоянно и многократно - то тут конечно приходтся смотреть как что писать ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 22:25 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
в случае иннер джоина условия соединения равносильны условиям в предложении where и оптимизатор может снача на сотни тысяч записей в таблице постов начать джоинить другие таблицы, что может потребовать выделения значительного объема ОЗУ и сброса результата в tempdb, что не есть продуктивно. Простите, был напуган. это бред, сорян. По крайней мере для скуля (судя по темпдб) Для мелких серверов с хуевым оптмизатором - может быть правдой. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 22:26 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
З.з.ы. вышеописанное применительно к ms sql, чего там с оптимизатором mysql - я хз ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 22:27 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
вначале у меня какие-то дубли получались так вроде и задача была " нужно выводить список вложений" - значит ты мог получить в одной теме несколько постов - если в посте было несколько аттачей ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2022, 22:31 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Именно для таких долбойобов я пишу статьи На, у тебя отвалилось ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2022, 11:15 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
ты не "элита", ты говно ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2022, 12:30 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
это поше или очередное его подрожалово? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2022, 12:30 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
блядь, просто йобаная классика Именно для таких долбойобов я пишу статьи, но долбойобы, разумеется, хуй их читают Там моя подпись, так чот ищи сам но в двух словах классическая ошибка - это фильтрация по "правой" таблице при лефт джойне, которая превращает аутер в иннер. если изначально и нужен был иннер, то в нормальных серверах рояли особо не играет. Если оптимизатор говно - рояль может быть второй классический случай - использование дистинкта при неправильной работе с мастер-слейв вместо того чтобы юзать exists (который на самом деле нужен), некто юзает джойн со слейвом, получает мультипликацию хедера, пугается и пиздячит туда дистинкт На самом деле для разовых запросов - практически похуй как ты что там пишешь. Ну поебётся сервер минуту вместо того чтобы выполнить запрос за полсекунды - всем похуй, запрос разовый, лишь бы результат был правильный но если запрос выполняется постоянно и многократно - то тут конечно приходтся смотреть как что писать ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2022, 14:12 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Интересно и как может пагубно сказаться на производительности замена left join на join? в общему случае для скуля (а не мускуля) существуют варианты, когда такая замена влияет на производительность в случае с мелкими базами (мускул, постгре, мария, фиребёрд, етк) изменеие производительности может быть из-за оптимизатора, когда при преобразовании AST для разных кейсов используются разные "костыльные" ветки оптимизатора. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2022, 14:41 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
постгре И всё равно я сомневаюсь, что замена left join на join может вызвать деградацию. from Table1 a left join table2 b on a=b vs select a.* from Table1 a inner join table2 b on a=b могут давать разный перформанс при разный случаях ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2022, 15:21 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Правильно ли я понимаю, грубо говоря, в случае left join ему надо просто к большому куску надо присобачить ещё кусочек, а в случае join, отсечь ненужное из двух кусков и уже их склеить? тогда вроде бы логично, что join дороже и дольше должен выполняться? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2022, 16:22 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Соединение будет происходить одинаково в обоих случаях, но LEFT, как правило, возвращает больше записей и поэтому выполняется медленнее ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2022, 16:24 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Правильно ли я понимаю, грубо говоря, в случае left join ему надо просто к большому куску надо присобачить ещё кусочек, а в случае join, отсечь ненужное из двух кусков и уже их склеить? тогда вроде бы логично, что join дороже и дольше должен выполняться? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2022, 16:27 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
а что, и правда надо? это же знания из детского сада ну ладно, что стар, что мал... давайте на секундочку представим, что формальная запись запроса и правда отображает тот порядок, в котором "физически" соединятся таблицы при выполнении запроса тогда для select * from Tab1 left join tab2 on a=b будет один вариант соединения - мы идем по Таб1 и лепим к ней Таб2 а вот для select * from Tab1 left INNER join tab2 on a=b будет уже 2 варианта - идти по таб1 и лепить таб2 - или идти по таб2 и лепить к ней таб1 таким образом "Одинаково в обоих случаях" - немного неправильно. Второй момент - "лефт выполнятеся быстрее, т.к." - во первых не всегда "больше записей" (и как правило - ровно столько же записей - или даже МЕНЬШЕ) во вторых (зависит от случая) лефт может (и будет) читать с диска меньше данных для "правой" таблицы - следовательно, сам по себе запро будет выполнятся быстрее Ну и в некоторых случаях лефт все таки возвращает МЕНЬШЕ записей, чем иннер. upd поправил второй запрос, скопипастил и не заменил лефт на иннер ... |
|||
:
Изменено: 09.06.2022, 16:34 - Tammy Jo Saint Cloud
Нравится:
Не нравится:
|
|||
09.06.2022, 16:31 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
давайте на секундочку представим, что формальная запись запроса и правда отображает тот порядок, в котором "физически" соединятся таблицы при выполнении запроса Или это любители хинтовать запросы? "ДАвайте ПРЕДСТАВИМ", для целей демонстрации ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2022, 16:35 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Это пагубный подход в обучении. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2022, 16:41 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Второй вариант может выполнятся или на коротких таблицах, когда оптимизатор решит, что использовать индексы тут нет нужды, или когда в первой таблице есть индекс по полю второй таблицы. Я могу показать как минимум несколько вариантов - с большими таблицами, с маленькими, с индексами, без индексов и так далее. "второй вариант" показывает, что план выполнения иннер джойна может варьироваться по последовательности соединений (лефт тоже может,но для простоты мы это не учитываем) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2022, 16:43 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Нормальный человек будет делать индекс на FK. В некоторых случаях нормальный человек НИКОГДА не будет делать индекс на ФК ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2022, 16:43 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
В некоторых случаях нормальный человек НИКОГДА не будет делать индекс на ФК Но по этому полю только "дополнительно фильтруют" и никогда не используют это поле для основной фильтрации Следовательно, это поле индексировать не нужно Таким образом на большой таблице мы экономим один большой ненужный индекс И если полей типа "аналитика" несколько - то таким образом мы эконономим несколько раз ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2022, 20:38 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
так, нахуй Базя, если ты не в состоянии в собственном топике фильтровать обсосов типа дубль вэ - я не вижу смысла обсуждать тут общаться конструктивно Я пытался. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2022, 20:40 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Но по этому полю только "дополнительно фильтруют" и никогда не используют это поле для основной фильтрации Ещё есть примеры? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2022, 21:54 |
|
MySQL / Господа базоёбы, скок сюды
|
|
---|---|
#18+
Одного достаточно, нет? :) А хочется расширять горизонты своих знаний, может пригодиться же. Есть ещё какие-то варианты? В системах ЕТЛ/ДВХ тоже может быть - но это вариация вышеописанного случая с аналитикой, да и вообще там ФК не делают, ибо нефиг. ... |
|
:
|
|
10.06.2022, 12:30 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
В некоторых случаях нормальный человек НИКОГДА не будет делать индекс на ФК Но по этому полю только "дополнительно фильтруют" и никогда не используют это поле для основной фильтрации Следовательно, это поле индексировать не нужно Таким образом на большой таблице мы экономим один большой ненужный индекс И если полей типа "аналитика" несколько - то таким образом мы эконономим несколько раз ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2022, 22:03 |
|
MySQL / Господа базоёбы, скок сюды
|
|||
---|---|---|---|
#18+
Вообще такой сайт это скорее отчётная система, тут база денормализованная должна быть. Данные редко добавляются , о запросы всегда. в некоторый случаях денормализация может приводить к значительному возрастанию обьема денормализованных данных, и весь выигрыш, который мы получаем за счет элиминации джойнов и благодаря наличию правильных удобных индексов - мы будем терять на задержках операций ввода-вывода из-за возросшего обхъема данных ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2022, 22:05 |
|
|
Start [/forum/search.php?do_search=1&tid=2074&author_mode=wrote_post&author=Tammy%20Jo%20Saint%20Cloud&start_from=59113]: |
0ms |
get settings: |
1ms |
get forum list: |
4ms |
searching: |
13ms |
get settings: |
0ms |
get forum list: |
3ms |
get topic data: |
3ms |
check forum access: |
1ms |
check topic access: |
1ms |
get forum data: |
1ms |
get found posts: |
45ms |
track hit: |
24ms |
get online users: |
48ms |
check new: |
1ms |
others: | 259ms |
total: | 404ms |
0 / 0 |