|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Server Version: WI-V3.0.0.32483 Firebird 3.0 SELECT FIRST 20 a.ID, DS.RND FROM (select FIRST 100 a.id, rand() as RND from articles a order by ID desc) AS DS JOIN articles a ON a.ID=DS.ID ORDER BY DS.RND Делаем сортировку по значению RAND() из внутреннего подзапроса. В колонке RND в плане сортировки полная каша... В чем смысл - из 100 последних фотографий (по ID) делаем выборку 20 случайных. Вроде как результат по сути получается, 20 последних фоток вроде как хаотично выбираются, но что с сортировкой по RND? Там ведь явно значение из подзапроса указано, или RAND() повторно срабатывает? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2018, 22:46 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
barryили RAND() повторно срабатывает? Да. Не нравится - материализуй резалт-сет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 00:24 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovДа. Не нравится - материализуй резалт-сет. А в чем великий смысл повторного RAND() во внешней обертке? Я интерпретирую это как глюк. Мы же получили значения во внутреннем запросе и извне используем значение поля. В данном контексте использования результат в принципе устраивает, но у любого будут вопросы - а то ли это на самом деле. Что значит "материализуй резалт-сет"? Если внутренний подзапрос будет спрятан во view или процедуре - живое поле тоже будет извне жить своей жизнью? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 09:19 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
barry> А в чем великий смысл повторного RAND() во внешней обертке? Я интерпретирую это как глюк. Это не глюк и глубокого смысла/замысла в нём нет, просто такова реализация. IIRC, это даже задокументировано. P.S. Кроме того, IIRC вызовов может быть даже 3, а не 2. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 09:28 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, Странно конечно... кому это в голову пришла такая реализация :) Хотя я получил подтверждение что это все таки рандомная выборка/сортировка. Но предсказуемая не так, как бы подумалось. С двойной непредсказуемостью.... или я еще что-то упустил... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 09:39 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
barry, в процедуре точно не будет. Материализовать результат в запросе можно как то так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 09:41 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Ты имел ввиду второй вызов ORDER BY DS.RND, а третий SELECT FIRST 20 a.ID, DS.RND. Ситуация вообще не контролируемая... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 09:43 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
barry, по поводу запроса я соврал. Не смотря на то что окно буферизируется, но всё равно столбец перевычисляется. А вот так работает Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
FETCH FIRST 10 ROWS ONLY ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 09:50 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
barry, > В чем смысл - из 100 последних фотографий (по ID) делаем выборку 20 случайных. не стоит напрягать этим сервер ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 10:12 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Дегтярев Евгений, А кого надо напрягать? Сеть, передавая все 100? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 10:28 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Денис Последний твой запрос дает у меня все время одинаковый набор ID с сортировкой по ID. Колонки RND1, RND2 с одним значением. По твоему запросу получается хвост наименьших ID из последних 100. В принципе своим первым запросом я решаю поставленную задачу - выборка 20 хаотичных фотографий из последних 100. Проблема просто в том, что я уже на протяжении ряда лет работы с IB/FB давно не задавал себе вопрос - все ли у меня в порядке с головой. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 10:31 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Дегтярев Евгений, > не стоит напрягать этим сервер Ты эксперт по оценке напряжения серверов? Берем 100 штук ID по ключу, из низ выдергиваем 20, правда беспорядочно, но такова суть идеи. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 10:36 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
barryили я еще что-то упустил... http://www.ibase.ru/dataaccesspaths/ Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 11:31 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
barry, мда, чёт внимание не обратил. Ну тогда из ХП. А вообще в чём глубокий смысл сохранить значение этого RAND? Главное ведь чтобы значения в случайном порядке выдавались. Есть ли вообще смысл возвращать значение DS.RND? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 11:35 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Симонов Денис, Не, смысла особого нет, все равно мы же ведь хаос выбираем. Задача нормально решается еще моим первым запросом. Просто немножко странно как оно все это проявляется, если на это смотреть и как оно устроено внутри. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 11:43 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Я просто ожидал однократного срабатывания RAND(), лишь в том месте где оно явно указано. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 11:45 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Неужели и внутренний Gen_ID(...) мне извне кашу выдаст? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 11:50 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
barry, все вычисляемые поля вычисляются столько раз сколько используются, это касается не только RAND ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 11:52 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Если в таблице 1000 записей, то функция LongExecTimeMathFunc будет вызвана 2000 раз. А ещё может быть: Код: sql 1. 2. 3.
Какой процент разработчиков знает, что TransferPayment будет вызван по два раза на запись? И таким образом может случиться либо по два перевода (и вторые без записи в лог), либо в логе записи будут не отсортированы по TransferResult. А какой процент разработчиков вспомнит что он это знает? Вот вы, например, читающий эти строки, вспомните? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 12:14 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Симонов Денис, > все вычисляемые поля вычисляются столько раз сколько используются, это касается не только RAND Кажется мне нужна перезагрузка... внутренний вызов Gen_ID действительно "живой" извне... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 12:22 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
HommerКакой процент разработчиков знает, что TransferPayment будет вызван по два раза на запись?100% получивших пендель за такой код с побочными эффектами ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 12:22 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
hvladHommerКакой процент разработчиков знает, что TransferPayment будет вызван по два раза на запись?100% получивших пендель за такой код с побочными эффектами А как он догадается где проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 12:27 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Hommerhvladпропущено... 100% получивших пендель за такой код с побочными эффектами А как он догадается где проблема? Дающие пендель подскажут? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 12:27 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
hvlad, Влад, в свое время я поднимал вопрос поводу того, что измененный генератор при откате транзакции не откатывается назад. Меня вроде как убедили, что генератор мол особый объект, живущий вне транзакции. Хотя это тоже определенные данные в БД. Ну ладно... пусть будет так. Ну а здесь... Я же ведь значения полей беру из внутреннего подзапроса. Ну надо мне повторное срабатывание функции - я явно укажу вызов функции. Я не мог даже предполагать, что оно живое и динамичное. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 12:41 |
|
|
start [/forum/topic.php?fid=40&msg=39632191&tid=1561151]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
131ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 305ms |
total: | 534ms |
0 / 0 |