0

こんにちは、私はhttp://domasmituzas.files.wordpress.com/2011/09/mysqluc2008-mysql-web.pdfを読ん でいて、「良いページングの実践」は WHERE であり、OFFSET、LIMIT ではないことがわかりました

コード例、説明方法はありますか?

ここに画像の説明を入力

4

2 に答える 2

1

OFFSET を使用せずにページネーションを実装する方法の説明と例を含む、より優れたプレゼンテーションを利用できます。

引用:

OFFSET を大きくすると、アクティブなデータ セットが増加します。MySQL は、呼び出し元に返されることのないデータをメモリに格納する必要があります。

別の解決策は、最後に見た ID を保存することです。次のページhttp://domain.com/forum?page=2&last_seen=100&dir=nextのクエリは次のとおりです。

SELECT ... WHERE id < 100 /* last_seen */ BY id ORDER BY DESC LIMIT $page_size

前のページ: http://domain.com/forum?page=1&last_seen=98&dir=prev :

SELECT ... WHERE id > 98 /* last_seen */ ORDER BY id ASC LIMIT $page_size
于 2013-05-27T07:01:47.357 に答える
1

私はSQLの第一人者ではありません。しかし、私が知る限り、WHERE節はその特定の でどの行を選択するかを示していTABLEます。これは、LIMIT句の前に最初に実行されます。

このLIMIT句は、SELECTステートメントによって返される行数を制限します。したがって、この句は句の後に実行され、は よりも高速でWHEREあると結論付けられます。WHERELIMIT

それでも、WHERE句のPERFORMANCEは、条件をどのように形成するかによって異なります。

ページングに使用するものは次のとおりです。

SELECT *
    FROM table T
    WHERE T.Id > 100
    LIMIT 100;

LIMIT/を使用する代わりにOFFSET

SELECT *
    FROM table T
    LIMIT 100, 100;

大きなテーブルの利点がはっきりとわかります。

于 2013-05-27T05:49:10.280 に答える