2016-12-06 5 views
1

私は、オブジェクトへのアクセス権などの複数のテーブルを含むSQLクエリを書くための最良のパターンや方法を理解しようとしています。私が探している結果を得ることができますが、これがベストプラクティスかどうかを知りたいのです。「SELECT IN」ピラミッドは良い練習ですか?

例:

SELECT * FROM windows WHERE id IN(
    SELECT `window` FROM window_groups WHERE `group` IN(
     SELECT DISTINCT `group` FROM user_groups WHERE `user` = 1 
    ) 
) 

質問:このSELECT IN() "ピラミッド" をお勧めますか?

+1

基本的には何も悪くありません。しかし、 "それは良い習慣である"ということは、データがどの程度巨大であるかに密接に依存している。 – cFreed

+0

@cFreed ok cool、大規模なデータセットの場合は 'view'を使うことを検討すべきですか? –

+1

@ JordanDavisビューではパフォーマンスの向上は認められません。マテリアライズド・ビューは可能です。 – GuiSim

答えて

0

このパターンは、1つの理由ではお勧めしません。
外部テーブルからのみ情報を取得することができるため、多くのユースケースやデバッグが難しくなります。

+0

これらの理由から、 'join'を使用しますか? –

+0

@JordanDavis - はい。 –

関連する問題