我知道,这是一个非常古老的问题,已经被问过好几次了。
当我们有超过 2 亿条记录时,我想编写性能更好的查询,并且应该是独立于数据库的..
我试过以下查询
// MYSQL QUERY simillar TO rownum of Oracle (DB Supported: MYSQL, ORACLE, POSTGRESS)
SELECT RS.amt
FROM
(SELECT t.amount AS amt,
@rownum := @rownum + 1 AS rank
FROM salerecord t,
(SELECT @rownum := 0) r
ORDER BY t.amount DESC LIMIT 5) RS
WHERE RS.rank=5
//与支持LIMIT的数据库一起工作,具有良好的性能(支持的数据库:MYSQL,Postgres)
SELECT amount FROM salerecord ORDER BY amount DESC LIMIT 4, 1;
//适用于几乎所有数据库但性能不佳
SELECT amount FROM salerecord a WHERE 5 = (SELECT COUNT(*) FROM salerecord b WHERE a.amount <= b.amount) ;