sql >> Database >  >> RDS >> PostgreSQL

Een voorbeeldrij één voor één uit de database retourneren

Een order by zal altijd duur zijn, vooral als de uitdrukking in de volgorde door niet is geïndexeerd. Niet bestellen dus. Voer in plaats daarvan een willekeurige verschuiving uit in de count() zoals in uw vragen, maar doe het allemaal tegelijk.

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

Deze versie is mogelijk sneller

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. Alleen toetsenbordnavigatie gebruiken in Word, Excel en PowerPoint (deel 2:dialoogvensters)

  2. Hoe verouderde oracle.sql.ArrayDescriptor, oracle.sql.STRUCT en oracle.sql.StructDescriptor te repareren

  3. WHERE-clausules groeperen in Codeigniter

  4. Oracle JDeveloper gebruiken met MySQL Database Service op Oracle Cloud Platform, deel 1