PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да върна примерен ред от базата данни един по един

order by винаги ще бъде скъпо, особено ако изразът в реда от не е индексиран. Така че не поръчвайте. Вместо това направете произволно отместване в count() както във вашите заявки, но направете всичко наведнъж.

with t as (
    select *
    from
        products p
        inner join
        images i using (productid)
    where
        prodtype = $sometype
)
select *
from t
offset floor(random() * (select count(*) from t))
limit 1

Тази версия може да е по-бърза

with t as (
    select *, count(*) over() total
    from
        products p
        inner join
        images i using (productid)
    where
        prodtype = $sometype
)
select *
from t
offset floor(random() * (select total from t limit 1))
limit 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. геометрията не се разпознава като параметър за Find_SRID

  2. Какво прави ::в PostgreSQL?

  3. Django и postgresql схеми

  4. Как работи функцията Radians() в PostgreSQL

  5. Postgres грешка при актуализиране на данните в колоната