sql >> データベース >  >> RDS >> Mysql

mysqlカウントパフォーマンス

    次のブログ投稿をご覧ください:

    1) COUNT(***)vs COUNT(col)
    2)MySQLパフォーマンスの簡単なヒント
    3) InnoDBの高速カウント(*)

    ところで、どのエンジンを使用していますか?

    編集済み: 行数がいくらかあるかどうかを知る必要がある場合に、カウントを高速化する手法について。申し訳ありませんが、私のクエリが間違っていました。だから、あなたがただ知る必要があるとき、例えばあるかどうか。サブクエリを試すことができる特定の条件による300行:

    select count(*) FROM
    ( select 1 FROM _table_ WHERE _conditions_ LIMIT 300 ) AS result
    

    最初に結果セットを縮小し、次に結果をカウントします。結果セットは引き続きスキャンされますが、制限することができます(もう一度、DBへの質問が「ここでは300行より多いまたは少ない」である場合に機能します)。DBに300行を超える場合は、クエリが高速であるという条件を満たす。

    テスト結果(私のテーブルには6.7mln行あります):

    1)SELECT count(*) FROM _table_ WHERE START_DATE > '2011-02-01'
    4.2mlnを65.4秒間返します

    2)SELECT count(*) FROM ( select 1 FROM _table_ WHERE START_DATE > '2011-02-01' LIMIT 100 ) AS result
    100を0.03秒間返します

    以下は、そこで何が起こっているかを確認するためのExplainクエリの結果です。

    EXPLAIN SELECT count(*) FROM ( select 1 FROM _table_ WHERE START_DATE > '2011-02-01' LIMIT 100 ) AS result
    



    1. SQLServerロックの主な概念

    2. Tan()がPostgreSQLでどのように機能するか

    3. テーブルにカンマ区切りの値を表示できません

    4. MicrosoftAccessでフォームヘッダーにロゴを追加する方法