クエリ速度の最適化に関するいくつかの経験

4976 ワード

個人の仕事の経験に基づいて、いくつかの最適化クエリーデータのいくつかの簡単な考え方をまとめて、みんなの参考に供して、データベースはmysqlで、開発の枠組みはSpring+SpringMVC+hibernateです.
一.インデックスの合理的な使用
クエリー条件として頻繁に使用されるフィールドにデータベースインデックスを追加するには、データベースインデックスを作成する文はcreate index index_です.name on table_name(colum_name);
インデックスを作成するには、次の点に注意してください.
      1.インデックスは、削除の速度に影響します.削除を頻繁に必要とするフィールドにはインデックスを慎重に使用します.
      2.インデックスは、性別など、基数の小さいフィールドにはあまり役に立たず、男女2種類しかなく、基数が小さい.
      3.インデックスは、B+ツリーのデータ構造を作成することでクエリーの速度を向上させ、一定のストレージ領域を占有します.
二.sql文の最適化
      1.select*fromをできるだけ少なく使用するのではなく、select colum 1、colum 2、colum 3 fromなど、どの列のデータをクエリーする必要があるかを調べる必要があります.
      2.NOT INの代わりにNOT EXISTSを使用します.
      3.インデックスにIS NULLまたはIS NOT NULLを使用しないで、a>0などで代用します.
      4.like'%XXX%'または'%XXX'を使用してインデックスを移動せず、'%XXX'のみインデックスを移動します.
三.hibernateキャッシュメカニズムの使用
hibernateはキャッシュの機能があって、1級のキャッシュと2級のキャッシュに分けて、1級のキャッシュはsessionレベルで、2級のキャッシュはsessionFactoryレベルで、1級のキャッシュはデフォルトで開いて、2級のキャッシュは手動で配置する必要があって、具体的に私のその他の博文を参照してください.
四、hibernate遅延ロードの機能を使用する
遅延ロードとは、すぐに使用する必要のないエンティティを遅延ロードし、使用するときに再ロードできることです.具体的な説明は私の他のブログを参照してください.
五.hibernateのhql文をsql文に変更
hibernateはhql文とsql文のクエリーをサポートし、sql文クエリーを使用すると不要な関連エンティティのロードを回避し、hibernateの遅延ロードメカニズムを使用すると、異曲同工の妙があります.
四.ページキャッシュの使用
ページキャッシュはデフォルトで許可されています.構成方法は次のとおりです.
方法1:ラベルに次のmetaラベルを追加します.
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=8">
<meta http-equiv="Expires" content="0">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Cache" content="no-cache">

方法2:javaコードに次のコードを追加します.
response.setHeader("Cache-Control","no-cache"); 
response.setHeader("Pragma","no-cache"); 
response.setDateHeader("Expires",0);