|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
Доброго времени суток)) Имеем, Firebird 2.5 Умудрённые опытом, подскажите, как лучше и что быстрее в процедуре использовать: Код: sql 1. 2. 3.
поле FieldDate дата со временем. в IBExpert в анализаторе показывает, что время меньше без ExtractDate. Спасибо)) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 16:47 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
descent52, 1. не используй литерал today без явного преобразования через cast 2. не используй UDF, если на то нет веских причин. ExtractDate - это 100% UDF 3. Запросы не эквивалентны по результату ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 16:58 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
Симонов Денис, результат то, как раз, один и тот же)) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 16:59 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
descent52, это не более чем везение ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 17:01 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
descent52 Симонов Денис, результат то, как раз, один и тот же)) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 17:01 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
Симонов Денис descent52, это не более чем везение ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 17:02 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
descent52, Хотя бы знать DDL таблицы, индексы и пр. Для чего вам понадобился это максимальное значение? - Быстрее всего дергать значение генератора, а если нет - использовать индексы. Удачи ! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 17:04 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
AltHasp - Быстрее всего дергать значение генератора, а если нет - использовать индексы. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 17:06 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3.
первый вариант выполнения 1мин 3 сек второй вариант 59 сек волшебный cast )))) Спасибо Денис. счас попробую без today про разный результат mID - спасибо!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 17:10 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
descent52, ещё раз повторяю. Запросы возвращают не эквивалентный результат!!! То что у вас он оказался эквивалентным просто совпадение. Завтра всё может изменится. Вы уж решите что именно вам надо получить. Хотя бы задачу опишите и вам подскажут какой запрос использовать ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 17:13 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
descent52, Попробуйте поюзать current_date, current_timestamp. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 17:14 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
AltHasp, а смысл? ТС даже не знает что хочет в результате получить, раз пишет два разных по смыслу запроса и спрашивает какой быстрее ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 17:17 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
Симонов Денис, если предположить, что FieldDate неизменяемая дата/время ввода записи, а mID первичный ключ (классический, скажем так), то результат в принципе одинаков. Но я обычно в таких случаях на дату ориентируюсь, она как бы очевидная величина. И опять же первичный ключ особо не изменишь, а дату/время запросто. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 17:27 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
Получение одной записи за минуту, без группировок и прочих выкрутасов - это феерический трындец. Индексы в таблицах курят в сторонке и в работе явно не участвуют. Завидую автору, у него свехтерпеливые пользователи. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 18:24 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
Симонов ДенисЗапросы не эквивалентны по результату вообще, на первый глаз, запросы с точки зрения оптимизатора идентичны. И разница по времени только в том, что гражданин первый запрос выполнял на "сыром кэше". Выполнял бы замеры по второму повтору - было бы одинаково. Другое дело, что если бы был индекс "by FieldDate desc" (или даже asc), там бы было всё "не так однозначно" из-за udf. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 18:48 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
оооо, kdv, всех благ))) выполнил запрос, закрыл соединение. Открыл соединение - выполнил второй запрос. попробую индекс на desc, отпишусь (пока без него делал))) а пока что, при прочих равных, select first 1... desc по времени проигрывает select max(). а пока, слушайте Симонова Денис - поменьше юзайте UDF-ки ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 20:11 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
descent52, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
вот попробуй. Код: sql 1.
Без индекса Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
с индексом Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Но это хорошо работает только в 3.0/4.0. Не уверен что хоть как то поможет в 2.5 З.Ы. Именно в моём сценарии заполнения запросы дают разный результат ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 21:00 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
Симонов Денис Но это хорошо работает только в 3.0/4.0. Не уверен что хоть как то поможет в 2.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 21:08 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
YuRock, потому что в 2.0-2.5 этот запрос даст другой план. PLAN (TABLE1 ORDER IDX_TABLE1_DATE INDEX (IDX_TABLE1_DATE)) Там было кое что сломано. В прочем в случае ТС можно сделать вот так Код: sql 1.
фильтр по FieldDate всё равно не селективен ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 21:16 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
descent52выполнил запрос, закрыл соединение. Открыл соединение - выполнил второй запрос. я извиняюсь, но это онанизм называется. "закрыл соединение" - вырубил кэш базы, открыл соединение, опять кэш создал. Запросы надо выполнять ДВА РАЗА подряд, в одном соединении. Чтобы было понятно - первый запрос без кэша, кэш наполняется из БД, второй запрос использует кэш, часть читается из кэша, другая часть (если не влезло в кэш) - с диска. И в любом случае первый запрос вызывает наполнение файлового кэша ОС, поэтому даже если "коннект-дисконнект" - всё равно для разных запросов это не измерение. Только для одного и того же запроса. p.s. казалось бы, за прошедшие 20 лет можно было бы выучить специфику операционных систем и кэширования файлов. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 21:52 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky Завидую автору, у него свехтерпеливые пользователи. Сдаётся мне, это была комедия там пользователями пока и не пахнет, это скорее исследование классической темы - кто сильнее, кит или слон. Поскольку результат не важен, а интересует сам процесс. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 22:36 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
Симонов Денис YuRock, потому что в 2.0-2.5 этот запрос даст другой план. PLAN (TABLE1 ORDER IDX_TABLE1_DATE INDEX (IDX_TABLE1_DATE)) Там было кое что сломано. В прочем в случае ТС можно сделать вот так Код: sql 1.
фильтр по FieldDate всё равно не селективен ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 22:54 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка, Сам процесс - это конечно да.. Правильно Дима сказал - рукоблудие.... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2021, 02:44 |
|
first 1 desc или max(id) - как лучше?
|
|||
---|---|---|---|
#18+
KreatorXXI Симонов Денис, если предположить, что FieldDate неизменяемая дата/время ввода записи, а mID первичный ключ (классический, скажем так), то результат в принципе одинаков. На прошлой неделе разбирался, откуда у меня в в БД логах записи с датой-временем того периода который я уже выгружал и удалял. Дата-время заполняется триггером. В итоге, глядя на ID и порывшись в записях, вспомнил, что на том сервере у нас в позапрошлом году дохла мама, со сбросом часов, вот логгер и брал некое дефолтное время через current_date. Так что, лучше смотреть одновременно и на date и на ID, в некоторых случаях может помочь диагностировать проблему или разобраться в порядке следования событий, несмотря на поломанную дату. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2021, 04:06 |
|
|
start [/forum/topic.php?fid=40&fpage=8&tid=1560096]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
75ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 209ms |
0 / 0 |