2017-01-25 28 views
1

クライアントから大量のデータを毎週インポートし、SQL Serverデータベースの内部テーブルに追加します。私たちは、このデータから毎週実行される特定のレポートの一時テーブルを作成すること(そしてうまくいけば、削除すること)がより簡単で便利であると考えるマネージャーを持っています。テーブルが多いとパフォーマンスが低下しますか?

(1ドル以上の借り手が21歳を超える顧客のこのメインテーブルからレコードを選択し、請求書を送信してから、現在のプロセスは、選択されたレコードのセットのそれぞれを、その週の個別の一時テーブルにダンプし、請求書が送信された後に、別のテーブルに結合されますこれらのテーブルが削除されることになっている。物事を行うには悪い方法では、私が知っている...あなたは私のことを言う必要はありません!)

私の見解は、すべてが列を使用して、一つのテーブルに入らなければならないことですそれが週のデータであることを示すフラグであり、そのデータをそこに保持し、その列を使用してクエリを実行します基準としてのmnの値。または、週のレポートに使用されたレコードだけを削除します。

NOW尋ねるの....

私の全体のポイントはこれです:

余分(不要)テーブルは、データベースのパフォーマンスが低下するのトンを持っていますか?

それとも、単にディスクスペースを無駄にして、SQL Server Management Studioのオブジェクトエクスプローラウィンドウで、古いテーブルの数百をスクロールする必要がある場合に混乱のように見えるが、それは本当にパフォーマンスを傷つけることはありませんでしょうか?

私たちは、これらすべての一時テーブルを作成するルーチンをスクラップし、ただ一つのメインテーブルからすべてを選択するには、それを書き換える必要がある理由のために、このマネージャに正当化を提供しようとしています。何かをやり直すのは少し難しいかもしれませんが、一度やり直すと、より効率的で保守しやすいはずです。

+1

私はこれについて間違っている可能性がありますが、私の経験では:いいえ、パフォーマンスには影響しません。ディスクスペースが無駄になり、データベースがメンテナンスの悪夢になってしまいます。 – Siyual

+1

自分自身をきれいにするメモリの一時テーブルで使用しないのはなぜですか? – Tanner

+0

それはちょっと私が思った、Siyualです。 私は、私が言ったように、私たちのプロセスを完全に再設計する必要があることを知っていますが、今私はこれを人々に説明して、理解し、必要な理由を理解しようとしています。 –

答えて

1

データベーステーブルのパフォーマンスが低下しますか?

いいえ、私たちは、私はあまりにも多くのテーブルを持つにパフォーマンスの問題を見たことがないテーブルの無数について話している場合を除き。

SQL Server Management Studioのオブジェクトエクスプローラウィンドウで何百もの古いテーブルをスクロールしなければならない場合は、ディスク容量が浪費され、混乱するように見えますが、実際にはパフォーマンスは低下しませんか?好みの事、本当に

それ。それは混乱のように見えるが、実際にパフォーマンスを傷つけることはありません。

今の質問は本当にです:このスパゲティでの作業の生産性や悪化に保存された時、このすべてが価値クリーニングの努力をしていますか?

+0

私は確かにそう信じている!そして、私がこれに賛成するより多くの議論が出ればするほど、私は(そしておそらく他の人たちが)経営幹部に納得させることができます。 –

+0

申し訳ありませんが、パフォーマンスは1つではありません。もっと簡単な解決策は、「dbo」の代わりに)異なるスキーマの「一時的な」表を構成して、毎月または毎週のスキーマを作成することです。これはSSMSのオブジェクトをより管理しやすい方法でソートしますが、コードへの影響は最小限に抑えられます。 –

+0

楽観的なことは、少なくとも原則として上司はここで混乱を取り除きたいと言っているので、少しずつ私たちは既存のスクリプトで作成された不要なテーブルの数を減らすことができると思います。それはちょっとした仕事です。このデータベースは、ExcelとAccessで経験した経験のある元社員が「設計」し、SQL Serverを使用するよう教えてくれました。ここにいた人はそれほど良く分かっていなかったので、今私たちはその災害を非難するよう努めています。 –

1

外部表の代わりにレポートにビューを使用するとします。このように、「ソースデータ」を修正または修正してレポートに反映させる必要がある場合。

ディスク領域では、各テーブルは独自のインデックスファイルを持つ独自のファイルに書き込まれます。これに収まらない(nvarchar(max)などの)テーブルの内容は、独自のファイルに格納されます。

幸いにも、データベースマネージャ(SQLサーバ)がファイルを管理しているので、心配はありません。

"ビッグデータ"評価のためには、可能な限り純粋な入力データを持つことが非常に重要です。したがって、作成日時にフラグを立てることで、特定の期間に作成されたデータを簡単に選択することができます。

もう1つの方法として、テンポラリ・データベースまたはイン・メモリ・データベースを埋めるストアド・プロシージャを作成し、それを戻すことにより、返されるその限られたセットに対して選択問合せを実行できます。 SQLサーバは、より効率的であるため、依然として特定のデータセットサイズでファイルを作成しますが、完了後にそれ自体を消去します。

私は一時テーブルの週単位のデータセットではうまく動作しません。 本当に大きなデータセットで唯一考慮すべきことは、毎年別々のテーブルを作成することです。したがって、索引はかなり早く反復することができ、複数年のステートメントが必要な場合は、

質問に答えてください: 複数のテーブルがパフォーマンスを妨げることはありません。しかし、開発者の柔軟性とデータベースのメンテナンスを行い、人件費を漸進的に増加させます。より良い将来的な証明の選択肢があります。

関連する問題