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

Mysqlインデックス構成

    更新:

    問題のより詳細な分析については、私のブログのこの記事を参照してください:

    LIMIT 150000, 10のようなものを発行する場合 、それはMySQLを意味します これらの150,000をトラバースする必要があります 記録して次の10を見つけます 。

    MySQLではインデックスのトラバースが遅くなります 。

    また、MySQL 後期行ルックアップを実行することはできません。

    理論的には、ORDER BY id LIMIT 100000, 10を実行すると 、インデックスを使用して100000から値を見つけるだけで十分です。 100010へ 、次に10のみを検索します そのインデックスを満たし、それらを返す行。

    MySQLを除くすべての主要システム はそれを認識しており、値が実際に返される場合にのみ行を検索します。

    MySQL ただし、すべての行を検索します。

    クエリを次のように書き直してみてください:

    SELECT  news.*
    FROM    (
            SELECT  id
            FROM    news
            WHERE   cat_id='4'
            ORDER BY
                    id DESC
            LIMIT 150000, 10
            ) o
    JOIN    news
    ON      news.id = o.id
    



    1. json.dumps()を使用したMemoryError

    2. Pythonを使用したMySQL変数の挿入、機能しない

    3. ERRO1215。MySqlInnoDB

    4. PostgreSQLのカーソルベースのレコード