我有以下表結構:替代嵌套的SELECT語句
目前正在過濾的用戶是通過非常複雜的嵌套的SQL查詢(此外,它通過LINQ的是自動生成的)來實現。我看起來大概是這樣的:
SELECT FROM (SELECT FROM (SELECT FROM (infinity here...))))
有沒有簡化過濾過程的好方法?
請注意,有不同的特徵類型。下面是子查詢條件的樣本:
... WHERE cv.Text like '%aaa%' AND c.Id = 5
... WHERE cv.ImageId IS NOT NULL AND c.Id = 10
... WHERE cv.Number > 5 AND c.Id = 33
等等
會明白任何幫助和想法(DB改變結構,改變工藝,等...),謝謝!
如果它是由LINQ生成的,那麼爲什麼你會關心它是否顯得複雜?數據庫應該是它看起來是3NF的。您可能在ImageId和AllowedValueId上缺少FK。 – Paparazzi
有FKs,我只是不需要將它們添加到數據庫圖來簡化視圖。其實我並不是100%信任LINQ,我認爲自動生成的SQL腳本(以後稱爲'exec')遠不是最佳性能。也許某些DB視圖或存儲過程會提供更好的結果。 –
你的LINQ查詢在哪裏? – christiandev