SQL開発仕様

r
T
O

このドキュメントでは、SQL を使用するための一般的な開発仕様をいくつか紹介します。

テーブルの作成と削除

  • 基本原則: テーブル命名規則に従うことを前提として、アプリケーションがテーブルの作成および削除ステートメントを内部的にパッケージ化し、ビジネスプロセスの異常な中断を防ぐための判断ロジックを追加することをお勧めします。
  • 詳細: アプリケーション側で異常に実行された SQL コマンドによる異常な中断を回避するために、 if判断を追加するには、 create table if not exists table_nameまたはdrop table if exists table_nameステートメントを推奨します。

SELECT *の使用法

  • 基本原則: クエリにSELECT *使用しないでください。
  • 詳細:必要に応じて適切な列を選択し、 SELECT *使用してすべてのフィールドを読み取る操作はネットワーク帯域幅を消費するため、避けてください。カバーインデックスを効果的に活用するには、クエリ対象のフィールドをインデックスに追加することを検討してください。

フィールドで関数を使用する

  • 基本原則:クエリ対象のフィールドに対して関連関数を使用できます。インデックスの失敗を避けるため、 WHEREのフィルタリング対象フィールドに対しては、データ型変換関数を含むいかなる関数も使用しないでください。式インデックスの使用を検討してください。

  • 詳細な説明:

    推奨されません:

    SELECT gmt_create FROM ... WHERE DATE_FORMAT(gmt_create, '%Y%m%d %H:%i:%s') = '20090101 00:00:00'

    推奨:

    SELECT DATE_FORMAT(gmt_create, '%Y%m%d %H:%i:%s') FROM ... WHERE gmt_create = str_to_date('20090101 00:00:00', '%Y%m%d %H:%i:%s')

その他の仕様

  • 条件WHEREインデックス列に対して数学演算や関数を実行しないでください。
  • OR INまたはUNIONに置き換えてください。7 IN数は300未満でなければなりません。
  • あいまいプレフィックスクエリにはプレフィックス%使用しないでください。
  • アプリケーションがマルチステートメントを使用して SQL を実行する場合、つまり複数の SQL がセミコロンで結合され、一度にクライアントに送信されて実行される場合、TiDB は最初の SQL 実行の結果のみを返します。
  • 式を使用する場合は、その式がstorageレイヤー(TiKVまたはTiFlash )へのコンピューティングのプッシュダウンをサポートしているかどうかを確認してください。サポートされていない場合は、TiDBレイヤーでメモリ消費量が増加し、OOMが発生する可能性が高くなります。storageレイヤーにプッシュダウンできるコンピューティングは以下の通りです。

ヘルプが必要ですか?

不和またはスラック 、あるいはサポートチケットを送信するについてコミュニティに質問してください。

このページは役に立ちましたか?