ホームページ  >  記事  >  データベース  >  いくつかの MySQL データベース最適化ソリューション

いくつかの MySQL データベース最適化ソリューション

巴扎黑
巴扎黑オリジナル
2017-07-19 17:21:061268ブラウズ

最近仕事を探しているのですが、多くの企業が面接でデータベースの最適化について質問します。今日はデータベースの最適化の問題を要約し、例として MySQL を使用して説明します。

最適化する必要がある理由:
実際のプロジェクトが開始され、データベースが一定期間実行されると、この時点でのデータベースの初期設定は実際のデータベース実行パフォーマンスと多少の違いが生じます。最適化調整が必要です。

データベースの最適化は大きなトピックであり、次の 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。