|
Какой запрос будет быстрее 🠗 (Волшебник 10.11.2017 11:12) | ☑ | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0
arsik
гуру
09.11.17
✎
15:17
|
Вариант 1
ВЫБРАТЬ
Вариант 2 ВЫБРАТЬ
Вариант 3 ВЫБРАТЬ
ЗаказНаряд.Основание - Составной тип - все документы |
|||||||||||||
1
Borteg
09.11.17
✎
15:21
|
2
Вариант 2 |
|||||||||||||
2
Джинн
09.11.17
✎
15:26
|
Вы больше времени на написание сабжа потратили, чем потратили бы на замер.
|
|||||||||||||
3
arsik
гуру
09.11.17
✎
15:27
|
(2) Для замера нет наполненной базы.
|
|||||||||||||
4
ptiz
09.11.17
✎
15:28
|
Пофиг
Свой вариант |
|||||||||||||
5
Dmitrii
гуру
09.11.17
✎
15:29
|
(0) Не будет разницы
Свой вариант |
|||||||||||||
6
DrShad
09.11.17
✎
15:29
|
того что будет быстрее здесь нет
Свой вариант |
|||||||||||||
7
Филиал-msk
09.11.17
✎
15:31
|
(0) До варианта с ТИПЗНАЧЕНИЯ(...) = ТИП(...) не догадался?
|
|||||||||||||
8
antgrom
09.11.17
✎
15:34
|
(0) при большом количестве документов , любой запрос содержащий ГДЕ будет долгим.
Свой вариант |
|||||||||||||
9
DrShad
09.11.17
✎
15:35
|
(8) +1
нужно брать из регистров где Основание либо измерение либо часть измерения как в УТ 11 |
|||||||||||||
10
Borteg
09.11.17
✎
15:40
|
(9) достаточно проиндексировать реквизит..
|
|||||||||||||
11
xXeNoNx
09.11.17
✎
15:42
|
(0) Посмотри план запроса
|
|||||||||||||
12
xXeNoNx
09.11.17
✎
15:43
|
вариант 2
Вариант 2 |
|||||||||||||
13
Черный маклер
09.11.17
✎
15:43
|
(10) интересный индекс получится у составного реквизита :)
|
|||||||||||||
14
Borteg
09.11.17
✎
15:44
|
(0) главное чтобы на реквизите основание был индекс и вариант 2.
вариант 3 самое страшное что можно сделать при составном типе. |
|||||||||||||
15
Borteg
09.11.17
✎
15:44
|
(13) эмм?обычный индекс по ссылке, а что там будет индексироваться еще?
|
|||||||||||||
16
Черный маклер
09.11.17
✎
15:45
|
(0) без условия по Дате любой запрос будет неспешным
|
|||||||||||||
17
Borteg
09.11.17
✎
15:46
|
(16) сейчас все кластерные индексы в 1с нервно засуетились)
|
|||||||||||||
18
arsik
гуру
09.11.17
✎
15:56
|
(7) 8.1 - там такого нет
|
|||||||||||||
19
Филиал-msk
09.11.17
✎
15:58
|
(18) Ты прикинь, в 7.7 тоже нет!
|
|||||||||||||
20
Dmitry1c
09.11.17
✎
15:59
|
Филиал специальной олимпиады на мисте
|
|||||||||||||
21
mistеr
09.11.17
✎
16:28
|
Не будет лишних соединений.
Вариант 2 |
|||||||||||||
22
Анцеранана
09.11.17
✎
16:59
|
Согласен с (9).
Если с регистром не взлетает - я за вариант (2) из приведенных, но что-то мне подсказывает, что тут можно как-то быстрее. Возможен ли вариант с ВЫРАЗИТЬ не в ГДЕ, как вы думаете? Может это ОНО как раз? Свой вариант |
|||||||||||||
23
Филиал-msk
09.11.17
✎
17:03
|
(22) > Возможен ли вариант с ВЫРАЗИТЬ не в ГДЕ, как вы думаете? Может это ОНО как раз?
Зачем? (20) Перепись лауреатов |
|||||||||||||
24
mistеr
09.11.17
✎
17:04
|
(22) Зависит от того, что дальше собираемся делать с выбранными доками.
|
|||||||||||||
25
DrShad
09.11.17
✎
17:09
|
(24) в данном виде запросов не имеет значения
|
|||||||||||||
26
Aloex
09.11.17
✎
17:14
|
Вариант 4 Внутреннее соединение.
Свой вариант |
|||||||||||||
27
Cyberhawk
09.11.17
✎
17:45
|
Сравни планы запросов и тексты запросов СУБД, запили статью на ИС, доложи о результатах
|
|||||||||||||
28
Бычье сердце
09.11.17
✎
17:50
|
Выборка = Документы.ЗаказНаряд.Выбрать();
Пока Выборка.Следующий() Цикл ..................... |
|||||||||||||
29
Бычье сердце
09.11.17
✎
17:50
|
Нормальный вариант.
|
|||||||||||||
30
breezee
09.11.17
✎
18:03
|
(13) Вроде по каждой таблице будет индекс
В 1 и 2 вроде(!вроде) на уровня СУБД должно призойти соединение со всем таблицами и составного типа и будет искать, метод поиска будет зависить от того индексирован ли реквизит. Надо бы посомтреть план выполнения, чтобы понять точно что там 1С будет делать и как это оптимизирует СУБД Вариант 3 |
|||||||||||||
31
Numerus Mikhail
09.11.17
✎
19:04
|
(28) Чего уж мелочиться
Найдено = Ложь; Пока НЕ Найдено Цикл Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ ПЕРВЫЕ 1 | ЗаказНаряд.Ссылка |ИЗ | Документ.ЗаказНаряд КАК ЗаказНаряд"; Если Выборка.Следующий() Тогда Если Выборка.Ссылка.Основание = МоеОснование Тогда НужныйДокумент = Выборка.Ссылка; Найдено = Истина; Иначе НенужныйОбъект = Выборка.Ссылка.ПолучитьОбъект(); НенужныйОбъект.Удалить(); КонецЕсли; КонецЕсли; КонецЦикла; |
|||||||||||||
32
Лефмихалыч
09.11.17
✎
19:22
|
(31) транзакцию забыл перед циклом
|
|||||||||||||
33
Genayo
09.11.17
✎
19:37
|
(3) Могу завтра проверить на базе с 33 млн записей в таблице :)
|
|||||||||||||
34
Borteg
09.11.17
✎
21:37
|
(30) Вы о чем?((
|
|||||||||||||
35
Borteg
09.11.17
✎
21:37
|
(22) выразить используется только когда получается реквизит через точку от составного типа.
|
|||||||||||||
36
ВыборИногда
10.11.17
✎
00:02
|
(0)
Вводные - платформа 8.3.8.2008, количество документов 725107, индекс по полю ДокументОснование 1) План - Index Seek, условие ((T1._Fld18680_TYPE = 0x08 AND T1._Fld18680_RTRef = 0x00005A8B) AND (T1._Fld18680_TYPE = 0x08 AND T1._Fld18680_RTRef = 0x00005A8B AND T1._Fld18680_RRRef = @P2)) Количество чтений 3 шт 2) План - Index Seek, условие ((T1._Fld18680_TYPE = 0x08 AND T1._Fld18680_RTRef = 0x00005A8B AND T1._Fld18680_RRRef = @P2)) Количество чтений 3 шт 3) План - Index Scan, условие ((CASE WHEN T1._Fld18680_TYPE = 0x08 AND T1._Fld18680_RTRef = 0x00005A8B THEN T1._Fld18680_RRRef END = @P2)) Количество чтений 4361 Итого имеем - третий запрос самый медленный, второй и первый одинаковые, значит условие по ссылке не нужно. |
|||||||||||||
37
youalex
10.11.17
✎
00:36
|
(35) >>выразить используется только когда получается реквизит через точку от составного типа.
Плюс, еще, если нужно ограничить тип полей - в результате запроса или во временной таблице. В случае с вт- без "выразить" в запросе помещения в вт - зловредность пресловутой "точки" перетекает и в последующие запросы пакета. Имхо, это единственный случай, когда стоит использовать "Выразить". В случае получения реквизита через точку - явное соединение с таблицей (таблицами) будет и нагляднее и более предсказуемым с точки зрения поведения платформы. |
|||||||||||||
38
Antony8x
10.11.17
✎
06:26
|
2 меньше комманд с БД
Вариант 2 |
|||||||||||||
39
Мимохожий Однако
10.11.17
✎
06:37
|
(3) На полупустой базе измерять бессмыссленно. При заполненной базе иногда "неправильные" запросы дадут бОльший эффект.
Свой вариант |
|||||||||||||
40
d4rkmesa
10.11.17
✎
11:07
|
(0) Если Основание проиндексировано, 2 по идее быстрее, но в реальности скорее всего одинаково. 3-й вариант вообще бессмыслен.
Вариант 2 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |