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

PHPは、MySQLクライアントよりもクエリの実行に90倍の時間がかかります

    この質問について非常に遅れた更新を与える:

    原因はわかりませんが、PHPとCLIではEXPLAINが異なっていたことがわかりました。接続のいずれかの側面により、MySQLがインデックスに別のフィールドを使用することを選択するかどうかはわかりません。これは、私が知る限り、これらの項目は関連してはならないためです。しかし残念ながら、PHPのEXPLAINは、CLIが使用しているのに、適切なインデックスが使用されていないことを示しました。

    この(不可解な)場合の解決策は、インデックスヒントを使用することです。 。私の例からのこの変更されたクエリの「FROM」行を参照してください:

    SELECT HEX(al.uuid) hexUUID, al.created_on,
        IFNULL(al.state, 'ON') actionType, pp.publishers_id publisher_id,
        pp.products_id product_id, al.action_id, al.last_updated
    FROM ActionAPI.actionLists al USE INDEX (created_on)
    LEFT JOIN ActionAPI.publishers_products pp
        ON al.publisher_product_id = pp.id
    WHERE (al.test IS NULL OR al.test = 0)
        AND (al.created_on >= :since OR al.last_updated >= :since)
    ORDER BY created_on ASC
    LIMIT :skip, 100;
    

    これが誰かに役立つことを願っています!



    1. ハードディスク上のMySQLデータベースの場所を見つける方法は?

    2. 1つの列を複数の行に分割する

    3. バッチファイルからSQLを実行する

    4. 最適化フェーズと逃した機会