|
Что быстрее соединение или В 🠗 (Волшебник 27.12.2017 16:17) | ☑ | ||
---|---|---|---|---|
0
TolikoSprosit
27.12.17
✎
16:12
|
Что быстрее отработает:
"ВЫБРАТЬ Спр.Ссылка Из Справочник.Справочник КАК Спр ГДЕ Спр.Реквизит В (ВЫБРАТЬ тз.Ссылка ИЗ тз)" или "ВЫБРАТЬ Спр.Ссылка ИЗ Тз ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Справочник КАК Спр ГДЕ тз.Ссылка = Спр.Реквизит" Если Спр.Реквизит - индексированное поле. |
|||
1
aka AMIGO
27.12.17
✎
16:16
|
Произведи замер производительности, да сообщи здесь
|
|||
2
Волшебник
модератор
27.12.17
✎
16:17
|
(0) Произведи замер и доложи
|
|||
3
rs_trade
27.12.17
✎
16:17
|
(0) на ms sql скорее всего примерно одинаково будет
|
|||
4
SSSSS_AAAAA
27.12.17
✎
16:18
|
(0) Один из стандартных вопросов про коня в вакууме...
Если есть несколько разных спосбов получить результат, то, почему-то, некоторые думают, что один из этих способов обязательно лучше всех в любом случае. Не понятно только зачем тогда нужны остальные способы... Тесты, и только тесты на вашей конкретной системе и конкретных данных могут выявить победителя. |
|||
5
TolikoSprosit
27.12.17
✎
16:18
|
У меня быстрее первый вариант, но я не понимаю почему. Я списываю все на файловую базу.
|
|||
6
rs_trade
27.12.17
✎
16:19
|
(5) с файловой базой до свидания
|
|||
7
youalex
27.12.17
✎
16:19
|
(0) писать условия соединения в секции не ГДЕ не есть комильфо
|
|||
8
vde69
27.12.17
✎
16:19
|
для небольшого по размеру параметру оператор "В" конвертируется в много "ИЛИ"
соединение даже по индексированому полю вполне может пойти по фулскан .... по этому все зависит от конкретного контекста... |
|||
9
Fragster
гуру
27.12.17
✎
16:20
|
||||
10
TolikoSprosit
27.12.17
✎
16:23
|
Я понимаю, что все от конкретного случая, но в вакууме то как правильно сделать?)) Смысл в том, что тз может быть и 2 строчки и 20000.
|
|||
11
Волшебник
модератор
27.12.17
✎
16:25
|
с файловой базой до свидания
|
|||
12
Fragster
гуру
27.12.17
✎
16:26
|
(10) если тогда иначе конецесли
|
|||
13
TolikoSprosit
27.12.17
✎
16:27
|
Ну я могу тестировать только на файловой, но работать это будет на сервере.
|
|||
14
TolikoSprosit
27.12.17
✎
16:28
|
Была бы у меня возможность замерять производительность в рабочей базе, я бы вам не писал пасаны;)
|
|||
15
rs_trade
27.12.17
✎
16:29
|
(13) на сервере, но в файловой?
|
|||
16
piter3
27.12.17
✎
16:30
|
(14) Проблема в чем?Сделать копию на скуле
|
|||
17
TolikoSprosit
27.12.17
✎
16:30
|
(16) Нет скуля у меня)
|
|||
18
TolikoSprosit
27.12.17
✎
16:31
|
(15) нет все православно, на скуле.
|
|||
19
rs_trade
27.12.17
✎
16:34
|
(17) так и разработку надо на сиквеле вести тогда. очень сильно отличается исполнение запросов.
|
|||
20
TolikoSprosit
27.12.17
✎
16:37
|
(19) Это я тоже понимаю, но есть что есть. Скуль в цоде, цод в жо..
|
|||
21
SSSSS_AAAAA
27.12.17
✎
16:38
|
(17) Ну так поставь.
|
|||
22
ILM
гуру
27.12.17
✎
16:41
|
Соединение должно быть внутреннее по полю с индексом
|
|||
23
TolikoSprosit
27.12.17
✎
16:44
|
Я хотел чтобы умный человек написал, что то вроде: ГДЕ быстрее при маленькой тз, соединение быстрее при большой тз, потому что..
а не вот это вот все) Ставить скуль, замерять производительность, смотреть планы, не так быстро как хотелось бы) |
|||
24
Fragster
гуру
27.12.17
✎
16:45
|
(21) сервер 1с тоже "поставь"?
|
|||
25
ILM
гуру
27.12.17
✎
16:48
|
ГДЕ и соединение будут ВСЕГДА быстрее по равенству, медленнее по диапазону и больше-меньше-равно.
|
|||
26
TolikoSprosit
27.12.17
✎
16:50
|
(22) А вы уверены что внутренее быстрее левого? или это про NULLи.
(25) Это понятно, но как это относится к моей задаче?) |
|||
27
SSSSS_AAAAA
27.12.17
✎
16:52
|
(24) А почему бы и нет? У меня стоит и не жужжит.
В (19) правильно написано. |
|||
28
ILM
гуру
27.12.17
✎
16:53
|
(26) Поверь, в 99% случаях да.
|
|||
29
TolikoSprosit
27.12.17
✎
16:56
|
(27) Локальная машина не сервер. Все равно не те ощущения))
|
|||
30
ILM
гуру
27.12.17
✎
16:58
|
Я про SQL и говорю
|
|||
31
rs_trade
27.12.17
✎
16:58
|
(23) так субд может один план выбрать для этих двух запросов
|
|||
32
TolikoSprosit
27.12.17
✎
16:59
|
(28) Кто-то мне говорил, что внутренее это полное, только с доп условиями, я с тех пор избегаю если могу.
|
|||
33
TolikoSprosit
27.12.17
✎
17:00
|
(31) НУ я не хочу под конкретный оптимизатор писать) Мне интересно, что в общем случае будет.
|
|||
34
rs_trade
27.12.17
✎
17:05
|
(32) это логика работы, а не физика исполнения. все соединения кроме кросса это декартово с условием. по логике работы.
|
|||
35
kuzyara
27.12.17
✎
17:10
|
///////////1////////////
RANGE SCAN USING INDEX vs Nested loop RANGE SCAN USING INDEX |
|||
36
rs_trade
27.12.17
✎
17:11
|
быстрее отработает если ТЗ заменить на подзапрос, с условием что там достаточно простой запрос. без создания врем. таблицы тогда обойдется исполнение.
|
|||
37
TolikoSprosit
27.12.17
✎
17:19
|
(35) Я правильно понял, что первый лучше, потому что цикла нет?
|
|||
38
kuzyara
27.12.17
✎
17:29
|
Несмотря на кучу бесполезных комментариев вопрос на самом деле интересный.
Возможно, тебе помогут в нем разобраться эти ссылки: https://www.sqlite.org/eqp.html https://www.sqlite.org/queryplanner.html https://stackoverflow.com/questions/1454188/how-can-i-analyse-a-sqlite-query-execution |
|||
39
kuzyara
27.12.17
✎
17:37
|
Инструмены разработчика - Консоль запросов - Запрос результата - Трасса
Когда раскуришь опкоды файлового движка бд - ты сможешь ответить на свой вопрос. |
|||
40
rs_trade
27.12.17
✎
18:01
|
(37) по итоговой стоимости посмотри
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |