【发布时间】:2012-07-17 05:21:44
【问题描述】:
我知道,这是一个很老的问题,已经问了好几次了。
当我们有超过 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) ;
【问题讨论】:
-
如果您正在寻找顶级性能,您将不得不放弃数据库独立性。
标签: sql