2012-04-20 4 views
2

インデックスが正しく設定されていない既存のPHP/MySQLアプリケーションがあります(モニタリングでは85%のテーブルスキャンを行っています)。正しいインデックスを選択するためのアプリケーションのレビュー方法 - php&mysql

私たちのインデックスを置くべき場所を特定するための良いプロセスは何ですか?

私たちはPHP(KohanaはDBアクセスのためにORMを使用しています)とMySQLを使用しています。

+0

遅いクエリを見ることから始めます。 – Thilo

+0

ジョインにあり、すべてのWHEREの右側にあるすべての列にインデックスを追加します –

+0

遅いクエリを生成するのに十分なデータがないため、まだ実稼働していません。また、ORMを使用すると、簡単にSQLからアクセスできます。過去のプロジェクトでは、私はいつも自分でSQLを書いていました。 –

答えて

1

答えは多くのことに依存します。たとえば、すべてのコストでSELECTを最適化する場合や、INSERTが重要であるかどうかを判断する場合は、戦略が異なる場合があります。 MySQL Performance Tuningの本やWebサイトを読んでみるとよいでしょう。まともなものがいくつかあります。

スロークエリログがある場合は、問題を引き起こしている特定のクエリがあるかどうかを確認してください。 http://dev.mysql.com/doc/refman/5.5/en/slow-query-log.html

実行するクエリの種類がわかっている場合や、スロークエリログやその他のメカニズムを使用して問題のあるクエリを特定した場合は、EXPLAINコマンドを使用してこれらのクエリに関する統計情報を取得できます。 http://dev.mysql.com/doc/refman/5.5/en/explain.html

EXPLAINからの出力を取得したら、それを使用して最適化することができます。 http://dev.mysql.com/doc/refman/5.5/en/using-explain.html

0

インデックスはプライマリキーまたはユニークキーだけではありません。テーブルに検索する列がある場合は、ほとんどの場合インデックスを作成する必要があります。

これはデータベースの問題を解決するのに役立つと思います。

http://net.tutsplus.com/tutorials/other/top-20-mysql-best-practices/