最適化する必要がある理由:
実際のプロジェクトが開始され、データベースが一定期間実行されると、この時点でのデータベースの初期設定は実際のデータベース実行パフォーマンスと多少の違いが生じます。最適化調整が必要です。
データベースの最適化は大きなトピックであり、次の 4 つのカテゴリに分類できます:
》ホストパフォーマンス
》メモリ使用パフォーマンス
》ネットワーク送信パフォーマンス
》 SQL ステートメントの実行パフォーマンス [ソフトウェア エンジニア]
以下にいくつかのデータベース SQL 最適化ソリューションを示します:
(01) テーブル名の最も効率的な順序を選択します (筆記試験で頻繁にテストされます) )
データベースパーサーは、FROM 句内のテーブル名を右から左の順序で処理します。
FROM 句の最後に記述されたテーブルが最初に処理されます。
FROM 句に複数のテーブルがある場合は、レコード数が最も少ないテーブルを選択して最後に配置する必要があります
クエリに接続されているテーブルが 3 つ以上ある場合は、他のテーブルによって参照されているテーブルを選択して最後に配置する必要があります。 。
例: 従業員番号、名前、給与、給与等級、部門名をクエリします
select emp.empno,emp.ename,emp.sal,salgrade.grade,dept.dname
from salgrade,dept, emp
where (emp.deptno = dept.deptno) と (emp.sal between salgrade.losal と salgrade.hisal)
1) 3 つのテーブルが完全に関連していない場合、レコード名と列名が最も少ないテーブルテーブルは最後に記述されます、以下同様です
2) 3 つのテーブルが関連している場合は、参照が最も多いテーブルを最後に配置します、以下同様です
(02) WHERE での接続句のシーケンス (筆記試験で頻繁にテストされます)
この原則に従って、データベースは WHERE 句を解析するために右から左の順序を使用します。
テーブル間の接続は他の WHERE 条件の左側に書かれなければなりません。 最大のものを除外できるもの 数量レコードの条件は、WHERE 句の右側に記述する必要があります。
例: 従業員番号、名前、給与、部門名をクエリします
select emp.empno,emp.ename,emp.sal,dept.dname
from emp,dept
where (emp . deptno = dept.deptno) and (emp.sal > 1500)
(03) SELECT 句での * の使用は避ける
解析プロセス中、データベースは * をすべての列名に順番に変換します。この作業はデータ ディクショナリにクエリを実行することによって行われるため、さらに時間がかかります
select empno,ename from emp;
(04) テーブル内のすべてのレコードを削除し、DELETEの代わりにTRUNCATEを使用してください
(05) COMMITを使用するとロールバックポイントが解放されるため、できるだけCOMMITを使用してください
(06 ) HAVING 句を WHERE 句に置き換えます
WHERE が最初に実行され、HAVING が後で実行されます
(07) 内部関数を使用して SQL 効率を向上させます
(08) テーブルエイリアスを使用します
salgrade s
(09) 列エイリアス
を使用オフ
以上がいくつかの MySQL データベース最適化ソリューションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。