2008-08-23 20 views
4

これはプログラミングの黒い芸術分野に該当することは知っていますが、これは突然私の職業で強化する必要がある領域です。この話題に触れられたのは2,3の話題がありますが、システムでどのようになるかについての項目が本当に扱われているのか分かりません。たとえば、コンパイラの仕組みを理解し始めたとき、私は驚異的なC++プログラマになりました。私は人々の働き方を理解したとき、より優れたソフトウェアエンジニアになりました。彼らは異なった学習経路です。SQL最適化トレーニングの参考資料、レッスン、またはベストプラクティスは何ですか

私は、構文的に正しいSQLとよく標準化されたデータベースを作成するだけでなく、高速化されたデータベースも作成するのに役立つために、自己のヘルプコースを一緒に配置することをお勧めします。あなたは何を重視しますか、誰があなたと話をしますか、誰があなたに読まれますか、そこにはどのように繋がりますか?

答えて

2

私は、クエリオプティマイザがどのように機能しているかを正確に理解するのに役立つリソースと、クエリプランを実際に理解する方法について長い時間を要しました。私は最終的に、この発見:SQL Server 2005の

T-SQL Querying, by Itzik Ben-Gan

を、私が近づい何かを発見していません。私自身の経験から

1

ベスト3のヒント:すべての列は、あなたが実際に取得しようとしているフィールドを指定して、よりもむしろ「SELECT

  • にテーブルを結合しようとしている

    • インデックス* FROM ... "
    • 独自のロールアップではなく、SQL集計関数を使用します。よくある間違い:レコードセットを開くと、むしろ使用するよりも、レコードセットのプロパティを「カウント」を使用して「SELECT COUNT(*)を...」

    私はこれが本格的なリソースまたは何もないですけど、それはあなたを始めさせるでしょう。

    良いウェブリソース:http://www.sqlteam.com/tag/sql-server-performance-tuning

  • 1

    Guru's Guide本はかなり良い中級上級レベルSQL Serverリソースです。特に、このシリーズの3番目には、SQL Server 2000のかなり詳細なアーキテクチャ解説があります。これは、あなたが探しているような洞察を与えるかもしれません。

    1

    私は仕事のためにもっと多くのSQLを学んでいます(私は少し前に知っていましたが、多くのデータベースのやり取りが必要な作業に取り組んでいます)。私は読んでいます:

    Joe CelkoのSmartiesのSQLとAnthony MolinaroのSQL Cookbook。あなたが1つを選択していたなら、それはより多くの理論を持っており、より幅広い見解を持っているので、私はSmartiesのためのSQLを使うでしょうが、料理本はもっと "ここには特定の問題があります。 db applications "

    3

    BerkeleyDBについて学ぶ。データベースがどのように機能しているかについての詳細な情報を習得する必要があります。私の後ろに何年ものSQL Serverを持つ人物として、BDBを学ぶことは私を新しいレベルに導きました。複数のプラットフォーム(つまり、データのローカリティ、さまざまなファイル形式の効果、ディスククラスタの詳細など)にまたがって翻訳される豊富な知識があります。

    私はそれが心がかすかでないことを警告します。

    また、BDBで本を拾い読みしてみてください。厳密に基準物質から学ぶことはあまりうまくいかない。

    1

    私は、Stephane Faroult氏とPeter Robson氏によるArt of SQLのチェックアウトはO'Reillyです。これにより、データの正規化、したがって最適化の原則が大きくわかります。

    1

    クエリプランを読むことを学ぶ必要があります。あなたは、内部ループの内部動作、マージ結合、ハッシュ結合などを擬似コード化する方法を知る必要があります。

    クエリの計画は黒い芸術ですが、計画を読むことはそれほど悪くありません。あなたが走ろうとしているすべての計画を見てください(あなたが代表的なサイズのデータ​​と現在の統計を持っていることを確認してください)。あなたは、黒い芸術が作り出しているものを理解することができます。クエリプランを見ることで、データベースの仕組みや効率的ではないことをいつ実行するかについて、すぐに知ることができます。

    これらの非効率な点を取り、それらを見てください。選択した方法を見てください。 B-Tree、R-Tree、およびビットマスクのインデックスの違いを、推奨されているときだけでなく、推奨されるときだけでなく、どのように構造化され、どのように機能するのかを知るため、推奨される理由はわかります。

    私がそれを学ぶために見つけた本当の唯一の方法は、それを行うことです。

    ルールの唯一の例外はOracle 9以降で、明示的な理由がない場合にMerge Join Cartesianを選択することがあります。もう一度、黒の芸術。

    1

    SQL ServerクエリのパフォーマンスチューニングSajal Damによって蒸留されたのは良い本です。

    私の経験から、すでに言われていること以外にもいくつかのことが思い浮かぶ。 まず、挿入、削除、更新、またはトリガーを特に問わず、カーソルを避けてください! サブクエリを派生テーブルで置き換えます。 必要に応じて非正規化します。特に、クライアントIDなどのすべてのクエリで必要なものを得るために、2つまたは3つの大きなテーブルに結合する必要がある場合は、 一時テーブル、テーブル変数、または派生テーブルが高速になるかどうかを確認してください。 機能の使用を避けてください。

    関連する問題