数値フィールドがそれほど大きくない場合は、bigint を使用しないでください。
IP を格納するには、char(15) の代わりに int を使用することをお勧めします。
列挙型の使用は許可されていません
null フィールドの使用を避ける
null フィールドはクエリが困難です、NULL フィールドのインデックスには追加のスペースが必要です。NULL フィールドの複合インデックスは無効です。
#インデックス仕様
- 単一テーブル内のインデックスの数は、 5 を超えない
- 単一インデックス内のフィールドの数は 5 を超えない
- 文字列にはプレフィックス インデックスを使用し、その長さは接頭辞インデックスは 8 文字を超えません
- 接頭辞インデックスを優先することをお勧めします。必要に応じて、疑似列を追加してインデックスを作成できます
- テーブルには主キーが必要です
- 頻繁に更新される列を主キーとして使用しないでください
- 文字列列を主キーとして選択しないようにしてくださいキー
- これらの uuid md5 ハッシュを主キーとして使用しないでください - 離散的すぎます
- デフォルトでは、null 以外の一意のキーを使用します。主キーとして
- #自動インクリメントまたはナンバラーを選択することをお勧めします
- 重要 SQL にはインデックスを作成する必要があります (例: where 条件列)。 update および delete ステートメント、order by、group by、個別のフィールド
- 複数のテーブルの結合フィールドに注意してください
<p>1.区分度最大的字段放在前面<br>2.核SQL优先考虑覆盖索引<br>3.避免冗余和重复索引<br>4.索引要综合评估数据密度和分布以及考虑查询和更新比例<br></p>
<p>1.不在低基数列上建立索引、例如性别<br>2.不在索引列记性数学运算和函数运算<br></p>
<p>1.外键用来保护参照完整性,可以业务端实现<br>2.对父表和字表的操作会互相影响,降低可用性<br></p>
<p>1.非唯一索引必须以 inx_字段1_字段22.唯一索引必须以 uniq_字段1_字段2<br></p>
- インデックス フィールドのデフォルト値を空にすることはできません。 Null はインデックスのクエリ効率に大きな影響を与えます。
- テーブルに関連する SQL を繰り返しチェックし、左端のプレフィックスの特性に基づいてインデックスを構築します。複数のフィールドが繰り返されるインデックスの場合、ステートメント条件フィールドの順序を変更し、それらの結合インデックスを作成してインデックスの数を減らす必要があります。
- 一意のインデックスを使用できる場合は、一意のインデックスを使用してください
- 研究開発では、多くの場合 Explain を使用する必要があります。かわいそうに、彼らはヒントの使い方を学ばなければなりません。
#SQL 仕様##SQL ステートメントは可能な限り単純です
物事は単純であるべきであり、全体に時間がかかりすぎないようにする必要があります。
- ##トリガー、関数、ストアド プロシージャの使用は避けてください
#ビジネス結合を減らし、サクルアウトとシャーディングのための余地を残す データベースでの数学的演算を避ける。MySQL は数学的演算と論理的判断が苦手です。 selecy * は使用しないでください。これらのフィールドをクエリするときにそれらのフィールドを選択するだけです。 SQL で or を使用する場合は、in のように書き換えてください。 or の効率は次のとおりです。 in# ほど多くはありません -
##in の数値の数は 1000 以内にすることをお勧めします
-
ページングを制限し、効率に注意してください。制限が大きいほど、効率は低くなります。
-
union の代わりに Union all を使用してください
-
大きなテーブルの結合を避ける
-
グループ化を使用してください、自動並べ替え
-
データの更新は分割してバッチで更新する必要があり、一度にあまりにも多くのデータを更新しないでください
-
データベースとの対話の数
-
パフォーマンス分析ツールの使用に注意してください
-
SQL ステートメントにはすべての研究開発が必要です。SQL キーワードはすべて大文字です。 、単語ごとにスペースは 1 つだけ使用できます
-
SQL ステートメントでは暗黙的な変換を行うことはできません
-
必要がない場合は、使用しないでください。使用しないでください
-
使用禁止プレフィックスは % likeです
-
not in、not like などの否定的なクエリは使用しないでください
#データベース内で大規模なクエリを実行することは禁止されています
プリコンパイルされたステートメントを作成し、パラメーターのみを渡します。これは、SQL ステートメントを渡すよりも効率的です。 。 SQL インジェクションを削減します。
rand による順序を無効にする
単一の SQL ステートメントで複数のテーブルを同時に更新することを禁止します
-
- #プロセス仕様
#すべてのテーブル作成操作では、テーブルに関係するクエリ SQL に事前に通知する必要がありますすべてのテーブル作成では、テーブルをオンラインで構築する前に、どのインデックスを作成するかを決定する必要があります
##すべてのテーブル構造の変更およびインデックスの追加操作には、 DBA およびその他の関連担当者に通知してください 新しいテーブルにフィールドを追加する前に、研究開発チームは評価のために少なくとも 3 日前に電子メールを送信する必要があります、DBA 部門による最適化とレビュー-
バッチ インポートおよびエクスポート データは、観察を支援するために事前に DBA に通知する必要があります オンライン データベースからのバックエンド管理および統計クエリの実行は禁止されています スーパー権限を持つアプリケーション アカウントの存在を禁止します-
##これ以上は禁止しますビジネスのピーク時のバッチ更新とデータベース クエリ
|