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

customer.pk_name参加transactions.fk_name対customer.pk_id[シリアル]参加transactions.fk_id[整数]

    彼らは正しい。 CHAR(30)テキストフィールド(特に個人名データを含むフィールド)への結合は、時間がかかり、非常に非効率的で、非常に壊れやすくなります。人々は自分の名前を変更し(結婚は明白な例です)、複数の人々が同じ名前を持つことができます。

    データを表示する順序をサポートするためにテーブルに適切なインデックスを作成し、クラスタリングを忘れる必要があります。パフォーマンスの最適化手順は、発生する場所を探している災害のように聞こえます。申し訳ありませんが、そのようなテーブルを削除/作成すると問題が発生します。

    まず、customer.idのUNIQUE INDEX、transaction.ticket_numberのUNIQUE INDEX、トランザクション(id、ticket_number DESC)のINDEX(カーディナリティではなくパフォーマンスのため、一意性を強制することはそれほど重要ではありません)から始めます。そこの。データは、インデックスに表示される順序でトランザクションテーブルから返されます。

    クエリ最適化の他のすべての手段が使い果たされた場合にのみ、クラスタリングを検討します。



    1. MS SQL Server方言の例に関するSQL(DDL、DML)のチュートリアル

    2. エラー:CursorWindowから行0、列-1を読み取ることができませんでした。データにアクセスする前に、カーソルが正しく初期化されていることを確認してください

    3. 外部キーがある場合とない場合の参照の違いは何ですか

    4. Oracle:クエリで合計のパーセントを取得する方法は?