|
Сортировка по 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 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Hommer, ну ты прям пишешь будто для тебя это открытие. Все уже давно знают, что такую ересь писать нельзя. Вроде не первый год на форуме ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 12:42 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Симонов Денис, Ну select from select не такой уж и старый, в IB и даже наверное первых FB его не было. Я его использую довольно редко. Ну ладно... уже все понаписывали не так как надо, пока я ситуацию не контролировал. :) Так как мне погасить повторные вызовы? Только прятать подзапрос в процедуру? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 12:54 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
barryhvlad, Влад, в свое время я поднимал вопрос поводу того, что измененный генератор при откате транзакции не откатывается назад. Меня вроде как убедили, что генератор мол особый объект, живущий вне транзакции. Хотя это тоже определенные данные в БД. Ну ладно... пусть будет так.Это не "ну ладно". Это показывает на твой уровень владения предметом, увы не высокий. barryНу а здесь... Я же ведь значения полей беру из внутреннего подзапроса. Ну надо мне повторное срабатывание функции - я явно укажу вызов функции. Я не мог даже предполагать, что оно живое и динамичное.В SQL пользователь указывает ЧТО делать, а не КАК делать. Это новость ? Есть разные стратегии работы с выражениями, можно запоминать результат (это требует доп. памяти), можно вычислять их заново (это требует CPU). В Interbase 100 лет назад выбрали второй подход и изменить его не так просто, как кому-то хочется. Это не значит, что так будет всегда. Но пока что - вот так. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 12:57 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
WildSeryДегтярев Евгений, А кого надо напрягать? Сеть, передавая все 100? раз дергаем 100 и мешаем как угодно, не напрягая ни сеть не сервер ) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 12:58 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5.
В таблице 1000 записей. Сколько раз вызовется функция Func1? Сколько раз вызовется функция Func2? Как количество вызовов зависит от значений возвращаемых функциями Func1 и Func2? Код: sql 1. 2. 3. 4.
Func1 вызвана 2000 раз, всё ожидаемо, без вывертов движка. Дописываем sum: Код: sql 1. 2. 3. 4.
Func1 вызвана 1000 раз. Вот как так? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 13:03 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
HommerВ таблице 1000 записей. Сколько раз вызовется функция Func1? Сколько раз вызовется функция Func2?Почему тебя это интересует ? Из-за побочных эффектов этих ф-ций ? Избавься от побочных эффектов. Или перепиши вызывающий код. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 13:14 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Симонов Денисну ты прям пишешь будто для тебя это открытие. Все уже давно знают, что такую ересь писать нельзя. Вроде не первый год на форуме Для меня это не открытие. Хочешь я статью на Хабре напишу и мы узнаем кто знает а кто нет? :) Я не первый год. Но что мне теперь, несуразности перестать замечать? Или не говорить о них? Всем же понятно что баги и несуразности не должны утаиваться ни от пользователей ни от самих себя. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 13:16 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Дегтярев Евгенийраз дергаем 100 и мешаем как угодно, не напрягая ни сеть не сервер )В условии не описано, что надо получить 100 фоток утром и весь день 20 случайных из них показывать, время от времени перетасовывая. И что-то мне подсказывает, что так задача не стоит. Получение свежих данных в 5 раз эффективнее на сервере. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 13:24 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
hvladHommerВ таблице 1000 записей. Сколько раз вызовется функция Func1? Сколько раз вызовется функция Func2?Почему тебя это интересует ? Из-за побочных эффектов этих ф-ций ? Избавься от побочных эффектов. Или перепиши вызывающий код. Понял что старый код от Intebase, неправильный, менять на правильный не понятно когда, кому и зачем. А вот это: Hommer Код: sql 1. 2. 3. 4.
Func1 вызвана 2000 раз Код: sql 1. 2. 3. 4.
Func1 вызвана 1000 раз ? Тоже наследие Interbase? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 13:25 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Hommer, давай отличать баги и "неоптимальное" выполнение. Если что-то работает и возвращает правильный результат, то это уже не баг. А неправильный результат запрос может вернуть только если эти функции недетерминированные или с побочными эффектами (это уже клиника). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 13:29 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Hommer Код: sql 1. 2. 3. 4. 5.
Подскажете как переписать чтобы вызывалось по одному разу? Симонов Денис, пусть Func1 и Func2 - функции, которые для расчётов используют MatLab (что очень не быстро) или 10000 процессоров в aws (что ещё и дорого). И пожалуйста, смотрите на задачу не как на конкретную, а как на пространство возможных. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 14:11 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
HommerТоже наследие Interbase?За 500$ в час я объясню тебе все эффекты. Минимум - 3 часа. Начинаем ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 14:36 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Симонов ДенисHommer, давай отличать баги и "неоптимальное" выполнение. Если что-то работает и возвращает правильный результат, то это уже не баг. А неправильный результат запрос может вернуть только если эти функции недетерминированные или с побочными эффектами (это уже клиника). Код: sql 1. 2. 3.
TransferPayment возвращает True если отработала успешно и False если не успешно, т.е: TransferPayment(100, 1, 2, 1000000) вернёт True, а следующий такой же TransferPayment(100, 1, 2, 1000000) вернёт False, т.к. это попытка провести уже проведённое. Это простой и понятный пример недетерминированной функции: деньги уже заплачены, второй раз платить нельзя. Далее: в PaymentsToTransfer 1000 записей. Вас удивит, если обнаружите что после окончания работы этого sql в TransferPaymentsLog появятся 1000 записей с TransferResult = False, хотя все платежи были успешно проведены? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 14:39 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Hommer, недетерминированные функции - они такие. Особенно прикалывает, как по таким функциям пытаются индекс строить. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 14:46 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Hommer, Ну написал же Влад hvlad Есть разные стратегии работы с выражениями, можно запоминать результат (это требует доп. памяти), можно вычислять их заново (это требует CPU). В Interbase 100 лет назад выбрали второй подход и изменить его не так просто, как кому-то хочется. Это не значит, что так будет всегда. Но пока что - вот так. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 14:53 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
hvladHommerТоже наследие Interbase?За 500$ в час я объясню тебе все эффекты. Минимум - 3 часа. Начинаем ? Я за слушать отговорки беру $1000 в час :) Но если там будет про то почему за 18 лет с начала вашего первого срока так и не получилось побороть коррупцию и слезть с нефтяной иглы сделать хорошо, то скину половину :) Начинаем? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 14:55 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
18.04.2018 12:41, barry пишет: > в свое время я поднимал вопрос поводу того, что измененный генератор при откате транзакции не откатывается назад. СЕГОДНЯ ПРОСТО ПРАЗДНИК КАКОЙ-ТО! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 15:10 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
HommerTransferPayment возвращает True если отработала успешно и False если не успешно, т.е: TransferPayment(100, 1, 2, 1000000) вернёт True, а следующий такой же TransferPayment(100, 1, 2, 1000000) вернёт False, т.к. это попытка провести уже проведённое. Это простой и понятный пример недетерминированной функции: деньги уже заплачены, второй раз платить нельзя. если проектировщик ССЗБ, то да. Сколько раз повторять ни селективные процедуры, ни PSQL функции не должны внутри себя что-то модифицировать. По крайней мере если они используются в SELECT запросе, да ещё с JOIN к другим таблицам. Как говорится пути оптимизатора неисповедимы. То что работает в одном порядке сейчас завтра может начать работать совсем иначе. Да Firebird это позволяет, но надо же ещё здравый смысл включать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 15:10 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Hommer, вот тебе контр пример. В таблице T содержится 100000000 записей. Делаем вот такой простой запрос Код: sql 1. 2. 3. 4. 5. 6. 7.
Внимание вопрос сколько раз должен дёрнутся генератор? Тут ведь кто-то жаждил материализовать результат выражений. На самом деле это можно делать, но далеко не всегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 15:23 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
barry, я всё таки решил твою задачу Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 15:46 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Мимопроходящий, > СЕГОДНЯ ПРОСТО ПРАЗДНИК КАКОЙ-ТО! А почему бы не праздник, кто еще может устроить настоящий праздник? :) Я так интерпретирую транзакцию. Попробуй мне доказать обратное. Даже если генератор рассматривать без привязки к таблице (к полю ID). А просто как некую внутреннюю переменную. Это данные базы данных. Такое же, как и содержимое таблиц, просто неструктурированное. Почему на него не должны воздействовать правила транзакции? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 16:25 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Симонов Денис, Спасибо Денис! Занятие достойное уважающих себя мужчин. Весь вопрос ведь в том - почему нужно извращаться пол-дня чтобы получить очевидное решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 16:30 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
18.04.2018 16:25, barry пишет: > Я так интерпретирую транзакцию. Попробуй мне доказать обратное ты не обижайся, но пашол ты на (в хорошем смысле, конечно) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 16:33 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
barry, генераторы есть стандарте и называются там последовательностями. Можешь почитать там о том как они должны работать. В Interbase генераторы придуманы задолго до появления их в стандарте. И их поведение сделано таковым чтобы обеспечить уникальные суррогатные ПК. Во всех СУБД где есть последовательности они ведут себя аналогично Firebird. Сам подумай что будет при конкурентом доступе с ключами, если бы генераторы вели себя так как ты хочешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 16:40 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Симонов ДенисHommer, вот тебе контр пример. В таблице T содержится 100000000 записей. Делаем вот такой простой запрос Код: sql 1. 2. 3. 4. 5. 6. 7.
Внимание вопрос сколько раз должен дёрнутся генератор? Мне, как пользователю, важно чтобы Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
не возвращало: "3, 5, 7, 9, 11" вместо положенных "2, 4, 6, 8, 10" Довольно необычно увидеть такое, согласитесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 16:54 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Мимопроходящий, Я могу ходить где угодно и сколько угодно и даже понимать инерцию наследования кода от IB, сам писатель. Но от этого народ не перестанет набивать шишки на побочных эффектах от функций. Можем закрывать тему, я свой ответ получил. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 17:00 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
HommerМне, как пользователю, важно чтобы Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
не возвращало: "3, 5, 7, 9, 11" вместо положенных "2, 4, 6, 8, 10" Довольно необычно увидеть такое, согласитесь. И в связи с этим, как переписать Код: sql 1.
чтобы F1 и F2 вызывались только по одному разу на каждую запись из T? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 17:00 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Hommer, ты от вопроса то не уходи. Там не всё так очевидно как ты думаешь, потому что во многих случаях предикаты пробрасываются внутрь Derived Table и это хорошо ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 17:01 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Симонов ДенисHommer, ты от вопроса то не уходи. Там не всё так очевидно как ты думаешь, потому что во многих случаях предикаты пробрасываются внутрь Derived Table и это хорошо Я понял что там не очевидно. Оба варианта хороши при своих условиях. Причём в каких-то случаях правильно дать это на откуп оптимизатору, а в каких-то нужно иметь возможность сказать чтобы выполнилось как есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 17:04 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Hommer, а вы про вопрос с группировкой что думаете? Он решаемый? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 17:05 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Hommer, Тебе workaround придумать ли ты хочешь чтобы оптимизатор сам догадался. По поводу второго это не ко мне. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 17:13 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Симонов ДенисТебе workaround придумать ли ты хочешь чтобы оптимизатор сам догадался. workaround. И не мне, а всем. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 17:45 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Hommer, точно такая плюха через UNION ALL (кстати еле вспомнил про неё, помниться Таблоид где-то с этим извращался). Сам попробуй ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 17:53 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Hommerworkaround. И не мне, а всем. Запомнить, что любое выражение в запросе может вычисляться непредсказуемое число раз и не использовать недетерминированные функции где попало. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 17:58 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Алгоритмическая хрень должна писаться в процедуре алгоритмически. Запрос же - описание, что бы хотелось получить, без описания алгоритма. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 18:00 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
HommerИ в связи с этим, как переписать Код: sql 1.
чтобы F1 и F2 вызывались только по одному разу на каждую запись из T? Так и не получается сделать одним запросом. Такое тоже вызывает по нескольку раз: Код: sql 1. 2.
Единственное пока что точно работает: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 18:31 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
WildSeryДегтярев Евгенийраз дергаем 100 и мешаем как угодно, не напрягая ни сеть не сервер )В условии не описано, что надо получить 100 фоток утром и весь день 20 случайных из них показывать, время от времени перетасовывая. И что-то мне подсказывает, что так задача не стоит. Получение свежих данных в 5 раз эффективнее на сервере. ситуации разные бывают, одно дело если надо раз в минуту, другое если сотню другую в секунду ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 19:05 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Hommer, т.е. мой пример с unuin all ты не смотрел Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 19:41 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Симонов Денис, работает :) В доку не стыдно будет добавить этот workaround? :) Или правильней "не стрёмно?" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 19:55 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
barry> Даже если генератор рассматривать без привязки к таблице (к полю ID). barry> А просто как некую внутреннюю переменную. Это данные базы данных. barry> Такое же, как и содержимое таблиц, просто неструктурированное. Да, Боря сегодня в ударе. Давно, видимо, шашку в руки не брал, заржавела уже. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 21:51 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
barryМимопроходящий, > СЕГОДНЯ ПРОСТО ПРАЗДНИК КАКОЙ-ТО! А почему бы не праздник, кто еще может устроить настоящий праздник? :) Я так интерпретирую транзакцию. Попробуй мне доказать обратное. Даже если генератор рассматривать без привязки к таблице (к полю ID). А просто как некую внутреннюю переменную. Это данные базы данных. Такое же, как и содержимое таблиц, просто неструктурированное. Почему на него не должны воздействовать правила транзакции? Хочется устроить очередь за ID? Чтобы следующий мог его получить только когда предыдущий закоммитится/отроллбачится? Так флаг тебе в руки, сделай табличку и раздавай из неё таким манером. А кому быстро нужны синтетические ключи и пофиг сколько их ушло в помойку поскольку раздумали использовать, будут пользоваться внетранзакционными генераторами. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 00:48 |
|
Сортировка по RAND()
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка, > Хочется устроить очередь за ID? Не надо отвлекаться от темы, генераторы проехали когда еще Абрамсы на IB бегали. Провокация никогда не помешает для поднятия настроения. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 01:53 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1561151]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
135ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
others: | 313ms |
total: | 562ms |
0 / 0 |