2016-06-26 3 views
5

私はいくつかのSQLクエリをスピードアップしようとしています。その後、FOUND_ROWS()の上限は?

SELECT 
    SQL_CALC_FOUND_ROWS book_id, book_title 
FROM 
    books 
LIMIT 40, 60 

そして、すべての結果数取得:改ページ上のクエリは、この(3ページ目)のようなものです私のSQL結果数が巨大な(本のmilions)であれば

SELECT FOUND_ROWS(); 

をしかし、その後FOUND_ROWS()を取ったことができます非常に長い時間

実際に何百万行もの本(書籍)をカウントする必要はなく、通常のユーザーの場合は「10000+」で十分です。

このような可能性がありますか?擬似コード:

SELECT FOUND_ROWS(LIMIT 10000) 
+0

これを使用する他のプログラミング言語(存在する場合)用のdbラッパー・ライブラリーを介して行カウントにアクセスできる場合、そのライブラリーはプロパティーに戻される行数を持ちます。テーブル・スキーマもいいです(索引付け)。 – Drew

+2

悪名高い[Perconaの記事](https://www.percona.com/blog/2007/08/28/to-sql_calc_found_rows-or-not-to-sql_calc_found_rows/) – Drew

+0

@Drewこの記事はほぼ10歳ですが、それはまだ実際ですか? – krokodilko

答えて

0

可能であれば、わかりません。しかし、私は次のことをしようと示唆している:

SELECT count(*) into number_of_rows from books. 

その後、ページネーションのためのnumber_of_rowsを使用しています。

関連する問題