0

私は現在、データベースを設計中です。あまりうまく設計されていない既存のシステムがあり、はっきりと見える小さな問題をすべて解決しています。たとえば、varchartrue/false代わりにフラグを使用しbitます。

私が知りたいのは、あなたが素晴らしいデータベース設計を持っていることをどうやって知るのですか?それともこれは神話ですか?つまり、構造は紙の上では驚くべきものに見えるかもしれませんが、データがそこにあると、どのように機能するのでしょうか。

「ルックアップ」値を格納するテーブルは、完全な説明テキストを格納するよりも高速ですか?例えば

エラーテーブル

Id    ErrorId    DateCreated
1     1          09/12/2011
2     5          10/12/2011

エラー説明表

Id    Description
1     Warning - failed to validate
2     Failed to locate file

このシナリオではview、必要な結合を含むSQLを作成するよりも、作成する方が有益でしょうか。

この質問を間違った場所に投稿した場合は申し訳ありません。

4

1 に答える 1

0

「ルックアップ」値を格納するテーブルは、完全な説明テキストを格納するよりも高速ですか?

私が働いている場所でそれをテストしました。(種類。ルックアップテーブルを他の種類のテーブルと区別しませんでした。)しかし、あなたの質問はルックアップテーブルに関するものではないことを指摘しておきます。あなたの質問は代理キー(ID番号)についてです。ID番号を使用せずに「ルックアップ」テーブルを作成できます。

タイミングの例については、このSOの質問を参照してください。転換点があるようです。転換点より下では、自然キーに基づくクエリは通常、ID番号に基づくクエリよりも高速に実行されます。(テーブルが狭くなり、結合が少なくなります。)しかし、転換点を過ぎると、結合サロゲートキーは自然キーよりも高速に実行されます。

しかし、「速い」とは必ずしも「速い」という意味ではありません。そして、「遅い」はまだ十分に速いかもしれません。

于 2011-12-14T10:22:05.640 に答える