PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara mengembalikan baris sampel dari database satu per satu

Sebuah order by akan selalu mahal khususnya jika ekspresi dalam urutan oleh tidak diindeks. Jadi jangan memesan. Sebagai gantinya lakukan offset acak di count() seperti dalam kueri Anda, tetapi lakukan semuanya sekaligus.

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

Versi ini mungkin lebih cepat

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. PostgreSQL - tidak dapat mengidentifikasi operator kesetaraan untuk tipe json

  2. Apakah kita siap untuk PGDay Nordik?

  3. Postgresql 9.x:Indeks untuk mengoptimalkan kueri `xpath_exists` (XMLEXISTS)

  4. Peningkatan otomatis pada kunci primer parsial dengan Entity Framework Core

  5. MySQL vs PostgreSQL? Mana yang harus saya pilih untuk proyek Django saya?