2013-02-07 147 views
4

我主要發佈這個問題作爲其他人的資源,因爲我找不到任何明確回答它的在線:LIMIT x,y語法performatively等效於OFFSET x, LIMIT yLIMIT x,y絕對等價於MySQL中的OFFSET x LIMIT y?

據官方MySQL docs

爲了兼容PostgreSQL,MySQL還支持ROW_COUNT偏置OFFSET語法的限制。

這意味着它們是絕對等價的。

但我找不到任何官方文檔如此明確地說。所以我99%肯定沒有任何低級別的差異,但會喜歡這個官方的批准和安心的印章。謝謝。

回答

0

我其實不確定,也找不到任何文檔,但我測試了它,它似乎工作得很好。結果:

[email protected] ~ $ mysql --version 
mysql Ver 14.14 Distrib 5.1.66, for debian-linux-gnu (x86_64) using readline 5.1 
... 

mysql (sandbox) > SELECT * FROM db1.t1 LIMIT 1, 2; 
+-------+------------+-----------------------------+ 
| grpID | grpCode | grpDesc      | 
+-------+------------+-----------------------------+ 
|  2 | INTL_LEADS | International leads   | 
|  3 | CPE_LEADS | CPE-specific Domestic leads | 
+-------+------------+-----------------------------+ 

mysql (sandbox) > SELECT * FROM db1.t1 LIMIT 2 OFFSET 1; 
+-------+------------+-----------------------------+ 
| grpID | grpCode | grpDesc      | 
+-------+------------+-----------------------------+ 
|  2 | INTL_LEADS | International leads   | 
|  3 | CPE_LEADS | CPE-specific Domestic leads | 
+-------+------------+-----------------------------+ 

所以是的。我做了比這更多的測試,但我不想發佈所有的測試。這非常方便,因爲語法對我更有意義。

+0

是的,它們在功能上是等價的(產生相同的結果),但我很想知道低級別的東西,即內存分配和字節碼順序是否相同。 –

+0

@BrianDuncan我不知道,但查詢計劃是相同的 –

+1

這似乎是支持兩種不同的符號樣式具有相同效果的情況,相當於'INSERT INTO x(y)VALUES(z)'之間的區別'和'INSERT INTO x SET y = z'。 – tadman

相關問題