掲題のようなことを言う人がいます。
RDBSでリレーションを使わないのは正直意味がわからないです。
リレーションを使わなくても遅いクエリはあると思いますし
チューニングや発行するクエリ次第でなんともなると思っています。
リレーションが嫌ならmongoでも使ってればいいじゃんって言ってしまったのですが
掲題のようなことに根拠はあるのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
ベストアンサー
設計やチューニング次第です。
Oracleで新橋のソフトウェア会社がSQL, PL/SQLの熟練者をひとりも使わないで素人だけで作ったシステムでした。50何時間かかっていたバッチがまったく使い物にならないので、SQL, PL/SQLを全部作り直して5時間ちょっとにしたことがあります。
投稿2017/04/09 23:24
総合スコア16415
0
リレーションというのが外部キー参照のことであると解釈します。
(maisumakunさんおっしゃるとおり、リレーションというのはRDBにおいてはテーブルを意味します。外部キー参照のことではありません)
以前、外部キーNightというイベントで登壇したことがあります(以下のURLはその聴講レポートの一つです)。
http://makopi23.blog.fc2.com/blog-entry-163.html
私は最後のLTで外部キーのTIPSを話しただけなんですが、他の演者の方は大体結論として「結局外部キー使っていない」が多かったですね…
他の演者の方が、株式会社はてなの中の人とかなんで扱っているデータ量が膨大で、それで本当にパフォーマンス上の問題で使うわけにいかないという状況のようなんですが、kamipo氏のまとめの最後の方にある通り、根本的にはMySQLの外部キー参照の仕組みが未熟だからというのがありそうです。
- 外部キーを張っているとエントリ削除時に関連する削除がどの程度発生するか予測がつかないことになる(そしてそれはシステムを無応答にする)
- 外部キーを張っているとシャーディングができない
- 外部キーの参照整合性チェックがステートメントごとに行われる(トランザクションの最後にまとめてチェックでない)ので単純に重い
投稿2017/04/10 00:51
編集2017/04/10 00:55総合スコア5568
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
リレーションといっているのが foreign key のことであるならば、そういう可能性はあることはあります。
foreign key の insert/update/delete ではキーの存在チェックが走りますから、その手間分だけ遅くはなります。
投稿2017/04/09 15:31
総合スコア13703
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
データをリレーションさせないなら、NoSQLのほうが適切かもしれません。
RDBMSはRelational Database Management System(関係データベース管理システム)の略です。
投稿2017/04/09 22:07
総合スコア145184
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
確かに良くわかりませんが
一気に更新することが考えられるアプリケーションの場合にポリモーフィック関連よりはそうでない方がいいよなとか思って実装したことはあります
数万件一気に更新するといったケースでは気にするくらいの事案だと思います
投稿2017/04/09 14:58
総合スコア58
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/10 03:03