sql >> データベース >  >> RDS >> Database

絶対に避けるべき5つの非常に一般的なSQLクエリの設計ミス

    SQL Serverデータベースを正常に実行するには、クエリの設計に熱心である必要があります。残念ながら、ほとんどの人は設計プロセスを考え直しません。その結果、彼らは単純な間違いを犯し、回避するのは簡単ですが、広範囲にわたる結果をもたらします。

    手始めに、クエリの記述が不十分な場合、ユーザーに超高速の取得時間を保証することはできません。サーバーも初日から問題に悩まされます。そして、今日のデジタルの世界では、これらはあなたが犯す余裕のない間違いです。しかし、どうすればこれらの間違いを避けることができますか?対処方法のヒントは次のとおりです。

    1。データモデルのレビューに失敗しました

    データモデルは、ユーザーがデータにアクセスする方法を決定します。ですから、モデルを最初から考えてみてください。そうしないと、扱いにくいクエリや複雑なコードを処理する必要があり、どちらもパフォーマンスに悪影響を及ぼします。データにアクセスするために必要なクエリを簡単に把握する方法は、データモデルを印刷することです。

    または、さらに良いことに、データモデリングツールにそれを実行してもらいます。印刷またはモデリングツールを使用すると、自分が何に反対しているかを確認できます。したがって、コードを簡素化し、コーディング時間を増やし、精度を高め、パフォーマンスを向上させることができます。

    2。あなたのテクニックを考慮しない

    どんなテクニックを使っていますか?それはカーソルロジックですか、それともセットベースのロジックですか?この特定の質問に対する簡単な答えはありません。それはすべて、ニーズに最適なパフォーマンスに依存します。たとえば、セットベースのロジックを考えてみましょう。これは、データベースアクセスの明白な選択です。結局のところ、SQLServerはそのために設計されています。ただし、カーソルロジックは、ベースのロジックよりもパフォーマンスが優れている場合があります。重要なのは、一方の手法が優れているときに他方の手法を使用しないことです。

    3。古いコーディング手法を使用していない

    実証済みのコーディング手法を使用する場合、問題が発生することはめったにありません。 SQL Server 2005から学んだコーディング方法でさえ、今日では役立つことがわかります。コーディングでは、TRY…CATCHエラー処理手法を使用してみてください。結果はあなたを驚かせるかもしれません。階層に共通テーブル式を使用したり、共通言語ランタイム(CLR)データベースエンジンを使用したりすると、驚かされるかもしれません。

    古いテクニックをブラッシュアップするのに助けが必要な場合は、いくつかの改訂を行い、オンラインでいくつかの記事を探してください。そこにはたくさんあります。こことここにいくつかのSQLの例があります。

    4。ピアレビューを利用していない

    クエリプランを展開する前に、他の誰かにレビューしてもらう必要があります。他の人があなたが見逃したものを見る可能性があります。インデックスとクエリのパフォーマンスに関する彼らのレビューは、多くの場合、コードをさらに改善するのに役立ちます。彼らはまた、その過程であなたから1つか2つのことを学ぶことができ、その逆も可能です。

    5。クエリのテストに失敗しました

    開発者は、コードをテストする必要がありません。まず、それは厳格です。次に、テスト環境(ハードウェアとデータ)が実際の本番環境と一致することはめったにありません。しかし、テストはコーディングの必要であり、避けられない部分です。したがって、コードを徹底的にテストし、可能な場合は、最終的な本番環境を可能な限り模倣するようにしてください。クエリは数百のレコードでうまく機能する可能性がありますが、最終的な環境では数百万のレコードに対しては機能しないことを忘れないでください。

    結論

    クエリは、SQLデータベースの速度とパフォーマンスを決定します。したがって、データモデルを確認しない、使用する手法を検討しないなどの一般的な間違いを避けるようにしてください。他の人は、古いコーディング手法を使用できず、ピアレビューメカニズムを利用せず、クエリのテストに失敗しています。


    1. OracleがDBMS_STATS.GATHER_TABLE_STATSを使用するのはなぜですか?

    2. Amazonec2のリモートpostgresqlサーバーに接続します

    3. MySQLのカーディナリティとは何ですか?

    4. PL / SQLでファイルをZIPする方法は?