0

RailsなしでRuby1.9.3とActiveRecord3.1.6を使用して、MSSQLServerに基づくシステムの自動化プログラムを作成しています。

テーブルには非標準のID(stk_idurb_id代わりに、、 id)があり、一部のテーブルには主キーがありません。

列を追加idして主キーとして設定する前は、プログラムの動作が非常に遅くなりました。プログラムが9000レコードのテーブルで2つの選択操作といくつかの小さな処理を行う間、私は3分近く待ちました。しかし、列を追加idして主キーとして設定すると、これらの操作は10秒未満で完了しました。

削除操作で見つけたさらに別の問題:テーブルに主キーがないとまったく機能しません。主キーなしで削除しようとするとエラーが発生します:

nil:NilClassの未定義のメソッド `to_sym'

本番データベースのテーブル構造を変更できません。idたぶん誰かが列を追加したり主キーを設定したりせずにこの問題を解決する方法を知っていますか?

4

3 に答える 3

1

備考:主キーのないデータベースは悪いです!

http://www.helium.com/items/1539899-why-a-relational-database-needs-a-primary-key

非標準のキーを使用しても問題はありません。self.primary_key="stk_id"を使用するだけです。

また、composite_primary_keysを使用することもできます: https ://github.com/drnic/composite_primary_keys

于 2012-06-21T13:15:15.240 に答える
1

主キーを使用せずに、各テーブルにインデックス付きビューを作成します。一意のクラスター化されたインデックスだけでなく、必要に応じて他のインデックスを適用できます。ビューに単一のテーブルを含めることで、インデックス付きビューが要求/禁止する多くの条件に違反することを防ぐことができます。

于 2012-06-20T22:26:24.240 に答える
1

ActiveRecord の代わりにSequelの使用を検討することをお勧めします。ActiveRecord のようにデータベース スキーマについて独断的ではなく、変更できないデータベース スキーマを使用する方が簡単な場合があります。

于 2012-06-20T23:26:38.073 に答える