|
Какой запрос получения максимального значения будет быстрее? | ☑ | ||||||
---|---|---|---|---|---|---|---|---|
0
Dzenn
гуру
29.06.18
✎
18:05
|
Всем привет!
Есть простейший непериодический независимый регистр сведений. Измерение только одно — "НомерПоПорядку", индексируется. Для каждой новой записи рассчитывается и присваивается по правилу МаксимальныйСуществующийНомер + 1. Как Вы считаете, какой запрос и почему будет работать быстрее? И при каких условиях. Запросы на скрине. http://prntscr.com/k0uhmr |
|||||||
1
Михаил Козлов
29.06.18
✎
18:08
|
Сделайте еще 1 РС, куда будете писать максимальный номер по порядку.
|
|||||||
2
ERWINS
29.06.18
✎
18:10
|
Думаю план будет идентичен.
Как минимум на оракле |
|||||||
3
H A D G E H O G s
29.06.18
✎
18:10
|
(0) Однозначно 2-ой, но, возможно, SQL настолько мудр, что и первый.
Никаких срезов делать не надо. |
|||||||
4
ERWINS
29.06.18
✎
18:12
|
вопрос, есть ли по этому полю индекс?
|
|||||||
5
H A D G E H O G s
29.06.18
✎
18:13
|
(4) Хароший вопрос, да, ERWINS?
|
|||||||
6
ERWINS
29.06.18
✎
18:14
|
(5) туплю
будут идентичны |
|||||||
7
Dzenn
гуру
29.06.18
✎
18:21
|
(6) Предполагаешь или знаешь?
|
|||||||
8
Fragster
гуру
29.06.18
✎
18:23
|
(7) ну так ведь индекс-то есть. правда непонятно, зачем автор делает автоинкремент вот таким вот небезопасным способом?
|
|||||||
9
Dzenn
гуру
29.06.18
✎
18:24
|
(8) а какой ещё способ есть в этих рамках?
|
|||||||
10
lodger
29.06.18
✎
18:36
|
(9) блокировать регистр пока текущий набор записей не отработает, например.
иначе, в интервал времени, пока предыдущий юзер получил номер, но еще не записал своё - кто-то тоже получит тот же номер и запишет поверх. |
|||||||
11
xXeNoNx
29.06.18
✎
22:34
|
Я за вариант без сортировки, но в целом будет одинаково.
|
|||||||
12
xXeNoNx
29.06.18
✎
22:43
|
+(11) хотя бы из-за того что проц. подпрыгнет на сортировке
|
|||||||
13
H A D G E H O G s
29.06.18
✎
22:52
|
(12) Почитайте про кластерный индекс
|
|||||||
14
mistеr
29.06.18
✎
23:19
|
(13) Такие регистры вроде без кластерного создаются? Или я ошибаюсь?
|
|||||||
15
mistеr
29.06.18
✎
23:20
|
(0) Вопрос по-моему не стоит выеденного яйца. Будет одинаково. А если регистр вырастет настолько, что появится ощутимая разница, можно ведь переписать. Но гораздо раньше появится проблема (10)
|
|||||||
16
H A D G E H O G s
29.06.18
✎
23:27
|
(14) С кластерным
|
|||||||
17
xXeNoNx
30.06.18
✎
00:23
|
(13) а шо там читать.., сортированные данные или не сортированные будут возвращены..., думать не хочу, если есть возможность избежать сортировки, лучше избежать, для меня.
|
|||||||
18
xXeNoNx
30.06.18
✎
00:24
|
(14) [ОРРХ | ОРНР1 +] Измерение1 + [Измерение2 +...] (Кластерный)
|
|||||||
19
youalex
30.06.18
✎
00:37
|
В идеале, было бы неплохо, если бы текущий максимум можно было хранить в глобальной переменной сервера. В очень глобальной, такой, например, как блокировка сеанса.
то есть, первое обращение, допустим, инициализирует эту хрень, а дальше, из своего сеанса, мы можем этот счетчик инкрементить. Так, что все другие сеансы будут об этом знать. Но это фантастика, наверное. |
|||||||
20
H A D G E H O G s
30.06.18
✎
00:43
|
(17) Это печально.
|
|||||||
21
H A D G E H O G s
30.06.18
✎
00:43
|
В идеале будет прочитана одна страница индекса. И всё. В неидеале - несколько.
|
|||||||
22
H A D G E H O G s
30.06.18
✎
00:44
|
Вот такие у нас 1Сники
|
|||||||
23
sechs
30.06.18
✎
00:49
|
(19) Слава тебе, Господи, что 1Совцы не проектируют SQL сервера!
|
|||||||
24
xXeNoNx
30.06.18
✎
01:19
|
(21) это прекрасно что это все, ну или почти все, понимают, но разве в (17) я об этом? Не думаю...
|
|||||||
25
xXeNoNx
30.06.18
✎
01:23
|
(22)а вот тут Вы правы
|
|||||||
26
H A D G E H O G s
30.06.18
✎
01:25
|
(24) Выбрать 600-ую страницу снизу из 600 страниц гораздо лучше, чем перебирать 600 страниц.
Но я думаю, что SQL достаточно умен, чтобы не перебирать 600 страниц в случае Максимум() а точно также выберет 600 страницу. Просто с Сортировать это железно будет, а с Максимум - не уверен |
|||||||
27
xXeNoNx
30.06.18
✎
01:31
|
(26) конечно лучше, в случае индекса, но если индекса нет. Это не в случае (0)
|
|||||||
28
Мимохожий Однако
30.06.18
✎
06:27
|
Можно сделать замер
|
|||||||
29
mistеr
30.06.18
✎
10:00
|
(19) Поздравляю, ты почти изобрел нумератор.
|
|||||||
30
mistеr
30.06.18
✎
10:01
|
(26) С Максимум точно так же ничего железного. Пути планировщика запросов неисповедимы.
|
|||||||
31
Лефмихалыч
30.06.18
✎
16:49
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |