|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
Да чё вы докопались до Distinct. Пробовать надо. Вряд ли там тысячи дубликатов каждого значения, но вопрошающему виднее. Сортировка резалтсета - не особо затратная операция на умеренном количестве дубликатов. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 14:14 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
rdb_devDISTINCT не способен к отбору по индексу distinct еще с ИБ 6.0 делается исключительно через SORT. Даже если бы он был "по индексу", то не отбором, а проходом, через table order index (как group by, order by...). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 14:26 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка, Автор написал, что до 100. Да, это мало. И сортировка быстрая. Вот только "родительских" записей сейчас уже почти три миллиона. А провести три миллиона сортировок - это уже совсем другая история. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 14:27 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
KreatorXXI, Если это такой частый запрос, тут самое место для хранимого агрегата. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 14:29 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
WildSeryГаджимурадов РустамТам 1-30-100. Не вариант справа налево.Рустам, пусть автор ответит. Это максимально плохое соотношение. Но пока из его речи следует, что только таблица дефектов не наполнена, остальные, значит, в более-менее рабочем состоянии, и текущее соотношение 1:3 А что автор ответит? Какая-то нестандартная схема работы? Описать бизнес процесс? Мне представляется невозможным просчитывать соотношения количества записей в таблицах. Все таблицы растут, defect явно меньше umass. Пусть планировщик FB сам решает по какому пути пойти. Естественно, ни о каком ручном подборе плана не может идти речи. И фильтров, собственно, нет. И, самое главное, почему Exists? Надо знать - Есть записи или нет. А какие они там - другой вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 14:30 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
KreatorXXI, с точки зрения множеств, тут хоть тресни - либо modul + (umass + defect), либо (modul + umass) + defect т.е. из трех множеств получить 2, и их уже склеить. Более быстрым вариантом, на мой взгляд, при имеющемся соотношении записей является modul + (umass + defect). Не пробовал вариант - from modul where exists (from umass where exists (defect)) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 14:37 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
kdvrdb_devDISTINCT не способен к отбору по индексу distinct еще с ИБ 6.0 делается исключительно через SORT. Даже если бы он был "по индексу", то не отбором, а проходом, через table order index (как group by, order by...).Правильно поправил - именно проходом. Странно, что в ФБ до сих пор DISTINCT только по натуралу. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 14:40 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
rdb_dev, во-первых не по натуралы, а внешней сортировкой. Во-вторых distinct применяется ко всем полям в предложении select. А в-третьих с чего ты взял что навигация по индексы будет быстрее при полном фетче? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 14:47 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
rdb_dev...Странно, что в ФБ до сих пор DISTINCT только по натуралу. А как еще, если все поля учитываются? Рассказывай. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 14:48 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
kdvKreatorXXI, с точки зрения множеств, тут хоть тресни - либо modul + (umass + defect), либо (modul + umass) + defect т.е. из трех множеств получить 2, и их уже склеить. Более быстрым вариантом, на мой взгляд, при имеющемся соотношении записей является modul + (umass + defect). Не пробовал вариант - from modul where exists (from umass where exists (defect)) ? Кто такой умасс я не догадываюсь, но слова модуль и дефект таки порождают смутные ассоциации из объективной реальности. И что-то мне шепчет, что у реального модуля вряд ли бывает больше пяти типов возможных дефектов. А вот один и тот же дефект (например, "не фурычит") может иметь чортова прорва типов модулей. То есть, количество возможных типов дефектов, по сравнению со всевозможными модулями, скорее всего, зело ограниченное. Начинать перебор от них мне представляется разумным. Хотя могу быть введён в заблуждение семантическими экивоками. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 14:51 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
Симонов Денисrdb_dev, во-первых не по натуралы, а внешней сортировкой.А "внешняя сортировка" в плане как выглядит? PLAN SORT(table NATURAL) - сортировка по значениям всех полей в SELECT записей, отобранных без использования индекса? Симонов ДенисВо-вторых distinct применяется ко всем полям в предложении select. А в-третьих с чего ты взял что навигация по индексы будет быстрее при полном фетче?Если все указанные в SELECT поля попадают в индекс, что мешает планировщику использовать именно индекс? Всего лишь отсутствие такой возможности, не так ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 14:58 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
kdvНе пробовал вариант - from modul where exists (from umass where exists (defect)) ? Примерно тоже самое. Необычный результат получается, если попробовать использовать конструкцию "first 1". Может попробовать перебрать возможные варианты с ней? А? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 15:01 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкаслова модуль и дефект таки порождают смутные ассоциации из объективной реальности. И что-то мне шепчет, что у реального модуля вряд ли бывает больше пяти типов возможных дефектов. А вот один и тот же дефект (например, "не фурычит") может иметь чортова прорва типов модулей. То есть, количество возможных типов дефектов, по сравнению со всевозможными модулями, скорее всего, зело ограниченное. Начинать перебор от них мне представляется разумным. Хотя могу быть введён в заблуждение семантическими экивоками. Кстати, да, +1. KreatorXXI> Мне представляется невозможным просчитывать KreatorXXI> соотношения количества записей в таблицах. Гм... Ну если сам не можешь просчитать - хоть аналитика постановщика вашего спроси/попроси. KreatorXXI> И фильтров, собственно, нет. Да ладно врать... ОК, вот выбрал ты записи каким-то макаром, получил из ляма 15 тыщ - дальше с ними что собрался делать? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 15:06 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
KreatorXXI> Необычный результат получается Чем же он необычный? Быстрее или результат отличается? > Может попробовать перебрать возможные варианты с ней? А? Не может. "first 1" с Exist-ом не нужен. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 15:08 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
Вариант "а-ля DISTINCT" использующий индексы. Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 17:12 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
rdb_dev, не правильный запрос. У него defect->umass->modul Т.е. производную таблицу с GROUP BY надо делать по связке двух таблиц. Я этот вариант уже приводил через CTE ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 17:18 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
Симонов Денисrdb_dev, Т.е. производную таблицу с GROUP BY надо делать по связке двух таблиц. Я этот вариант уже приводил через CTEСогласен! Проглядел приведенный тобой код. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 21:51 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
а так? Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2017, 02:17 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкаХотя могу быть введён в заблуждение семантическими экивоками. Именно так. В defect пишутся выявленные проблемы в изделии. vvvaitа так? Код: sql 1. 2. 3. 4. 5. 6. 7.
По барабану, всё также. Что называется - "От перемены мест слагаемых сумма не меняется". Попробовал через хранимку, через "for select". Банально, находится запись в defect, выходим из хранимки. С точки зрения количества сканированных записей получен очень хороший результат, раз в 30 меньше. Но с точки зрения времени выполнения - очень плохо. Время уходит на подготовку "for select"? Или сам вызов хранимки? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2017, 17:54 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
KreatorXXIБанально, находится запись в defect, выходим из хранимки. Это ничем не отличается от exists, только тормознее. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2017, 18:00 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
KreatorXXI> В defect пишутся выявленные проблемы в изделии. А umass что? > Попробовал через хранимку, через "for select". Банально, находится > запись в defect, выходим из хранимки. Во-первых, если делать хранимку, то делать весь запрос в хранимке, а не его часть. Во-вторых, хранимка тут вряд ли чем-то поможет, слишком простой случай. В-третьих, "находим-выходим" - это как тупой exists, он именно так и работает. > С точки зрения количества сканированных записей получен очень > хороший результат, раз в 30 меньше. Не похоже на правду. Показывай текст хранимки, планы и время + количество фетчей. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2017, 18:01 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
KreatorXXI, а как ты это количество сканированных записей определяешь? Трейсом что ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2017, 18:01 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
vvvaitwhere exists ( select * from umass b left join defect так получится, что umass left join defect выдаст ВСЕ записи из umass для проверки на exists, а без defect они к делу не относятся. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2017, 18:05 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4.
? Предполагается, что все индексы имеют место быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2017, 18:49 |
|
Exists по двум или более таблицам
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка Код: sql 1. 2. 3. 4.
? Предполагается, что все индексы имеют место быть. Индексы для дистинкт? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2017, 18:59 |
|
|
start [/forum/topic.php?fid=40&msg=39522432&tid=1561418]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
223ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 322ms |
total: | 646ms |
0 / 0 |