C#.NET-เตฝ LINQ เดšเต‹เดฆเตเดฏเด™เตเด™เตพ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฐเต€เดคเดฟเด•เตพ

เด†เดฎเตเด–เด‚

ะ’ เดˆ เดฒเต‡เด–เดจเด‚ เดšเดฟเดฒ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป เดฐเต€เดคเดฟเด•เตพ เดชเดฐเดฟเด—เดฃเดฟเดšเตเดšเต LINQ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ.
เด‡เดคเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เด•เต‹เดกเต เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเดจเตเดณเตเดณ เดšเดฟเดฒ เดธเดฎเต€เดชเดจเด™เตเด™เดณเตเด‚ เดžเด™เตเด™เตพ เด‡เดตเดฟเดŸเต† เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต LINQ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ.

เด…เดคเต เด…เดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเดคเต เดฒเดฟเด™เตเด•เต(เดญเดพเดทเดพ เดธเด‚เดฏเต‹เดœเดฟเดค เดšเต‹เดฆเตเดฏเด‚) เด’เดฐเต เดกเดพเดฑเตเดฑเดพ เด‰เดฑเดตเดฟเดŸเด‚ เด…เดจเตเดตเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฒเดณเดฟเดคเดตเตเด‚ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดตเตเดฎเดพเดฏ เดญเดพเดทเดฏเดพเดฃเต.

ะ SQL-เดฒเต‡เด•เตเด•เต LINQ เด’เดฐเต DBMS-เตฝ เดกเดพเดฑเตเดฑ เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏเดฏเดพเดฃเต. เดกเดพเดฑเตเดฑเดฏเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดถเด•เตเดคเดฎเดพเดฏ เด‰เดชเด•เดฐเดฃเดฎเดพเดฃเดฟเดคเต, เด‡เดตเดฟเดŸเต† เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ เด’เดฐเต เดกเดฟเด•เตเดฒเดฑเต‡เดฑเตเดฑเต€เดตเต เดญเดพเดทเดฏเดฟเดฒเต‚เดŸเต† เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต, เด…เดคเต เดชเดฟเดจเตเดจเต€เดŸเต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚ SQL เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เด‚, เดจเดฟเตผเดตเตเดตเดนเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด…เดฏเดšเตเดšเต. เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, DBMS เดŽเดจเตเดจเดคเตเด•เตŠเดฃเตเดŸเต เดžเด™เตเด™เตพ เด‰เดฆเตเดฆเต‡เดถเดฟเด•เตเด•เตเดจเตเดจเดคเต MS SQL เดธเต†เตผเดตเตผ.

เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, LINQ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ เด’เดชเตเดฑเตเดฑเดฟเดฎเตฝ เดฒเดฟเด–เดฟเดคเด™เตเด™เดณเดพเด•เตเด•เดฟ เดฎเดพเดฑเตเดฑเดฟเดฒเตเดฒ SQL เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ, เดชเดฐเดฟเดšเดฏเดธเดฎเตเดชเดจเตเดจเดจเดพเดฏ เด’เดฐเต DBA เดฏเตเด•เตเด•เต เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตปเตเดฑเต† เดŽเดฒเตเดฒเดพ เดธเต‚เด•เตเดทเตเดฎเดคเด•เดณเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดŽเดดเตเดคเดพเตป เด•เดดเดฟเดฏเตเด‚ SQL เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ:

  1. เด’เดชเตเดฑเตเดฑเดฟเดฎเตฝ เด•เดฃเด•เตเดทเดจเตเด•เตพ (เดšเต‡เดฐเตเด•) เด•เต‚เดŸเดพเดคเต† เดซเดฒเด™เตเด™เตพ เดซเดฟเตฝเดŸเตเดŸเตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเต (เดŽเดตเดฟเดŸเต†)
  2. เด•เดฃเด•เตเดทเดจเตเด•เดณเตเด‚ เด—เตเดฐเต‚เดชเตเดชเต เดตเตเดฏเดตเดธเตเดฅเด•เดณเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดฐเดตเดงเดฟ เดธเต‚เด•เตเดทเตเดฎเดคเด•เตพ
  3. เดตเตเดฏเดตเดธเตเดฅเด•เตพ เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดฐเดตเดงเดฟ เดตเตเดฏเดคเดฟเดฏเดพเดจเด™เตเด™เตพ IN เด“เตบ เดŽเด•เตเดธเดฟเดธเตเดฑเตเดฑเตเด•เตพะธ เด…เด•เดคเตเดคเดฒเตเดฒ, <> เด“เตบ เดŽเด•เตเดธเดฟเดธเตเดฑเตเดฑเตเด•เตพ
  4. เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด• เดŸเต‡เดฌเดฟเดณเตเด•เตพ, CTE, เดŸเต‡เดฌเดฟเตพ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดตเดดเดฟ เดซเดฒเด™เตเด™เดณเตเดŸเต† เด‡เตปเตเดฑเตผเดฎเต€เดกเดฟเดฏเดฑเตเดฑเต เด•เดพเดทเดฟเด‚เด—เต
  5. เดตเดพเด•เตเดฏเดคเตเดคเดฟเตปเตเดฑเต† เด‰เดชเดฏเต‹เด—เด‚ (เด“เดชเตเดทเตป) เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เดณเตเด‚ เดชเดŸเตเดŸเดฟเด• เดธเต‚เดšเดจเด•เดณเตเด‚ เดธเดนเดฟเดคเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต (...)
  6. เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตฝ เดธเดฎเดฏเดคเตเดคเต เด…เดจเดพเดตเดถเตเดฏเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดฑเต€เดกเดฟเด‚เด—เตเด•เตพ เด’เดดเดฟเดตเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดฎเดพเตผเด—เดฎเดพเดฏเดฟ เดธเต‚เดšเดฟเด•เดฏเดฟเดฒเตเดณเตเดณ เด•เดพเดดเตเดšเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต

เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดŸเดพเด•เตเดจเตเดจ เดชเตเดฐเดงเดพเดจ เดชเตเดฐเด•เดŸเดจ เดคเดŸเดธเตเดธเด™เตเด™เตพ SQL เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ LINQ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ เด…เดต:

  1. เด’เดฐเต เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเดฟเตฝ เดฎเตเดดเตเดตเตป เดกเดพเดฑเตเดฑ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตฝ เดธเด‚เดตเดฟเดงเดพเดจเดคเตเดคเดฟเตปเตเดฑเต†เดฏเตเด‚ เดเด•เต€เด•เดฐเดฃเด‚
  2. เด•เต‹เดกเดฟเตปเตเดฑเต† เดธเดฎเดพเดจ เดฌเตเดฒเต‹เด•เตเด•เตเด•เดณเตเดŸเต† เดคเดจเดฟเดชเตเดชเด•เตผเดชเตเดชเต, เด‡เดคเต เด†เดคเตเดฏเดจเตเดคเดฟเด•เดฎเดพเดฏเดฟ เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เด…เดจเดพเดตเดถเตเดฏ เดกเดพเดฑเตเดฑ เดฑเต€เดกเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดจเดฏเดฟเด•เตเด•เตเดจเตเดจเต
  3. เดฎเตพเดŸเตเดŸเดฟ-เด˜เดŸเด• เดตเตเดฏเดตเดธเตเดฅเด•เดณเตเดŸเต† เด—เตเดฐเต‚เดชเตเดชเตเด•เตพ (เดฒเต‹เดœเดฟเด•เตเด•เตฝ "เด’เดชเตเดชเด‚", "เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ") - เด’เดชเตเดชเด‚ ะธ OR, เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เด…เดตเดธเตเดฅเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเดšเตเดšเต, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเตผ, เด†เดตเดถเตเดฏเดฎเดพเดฏ เดซเต€เตฝเดกเตเด•เตพเด•เตเด•เต เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฏ เดจเต‹เตบ-เด•เตเดฒเดธเตเดฑเตเดฑเต‡เตผเดกเต เดธเต‚เดšเดฟเด•เด•เตพ เด‰เดณเตเดณเดคเดฟเดจเดพเตฝ, เด†เดคเตเดฏเดจเตเดคเดฟเด•เดฎเดพเดฏเดฟ เด•เตเดฒเดธเตเดฑเตเดฑเต‡เตผเดกเต เด‡เตปเดกเด•เตเดธเดฟเดจเต†เดคเดฟเดฐเต† เดธเตเด•เดพเตป เดšเต†เดฏเตเดฏเดพเตป เดคเตเดŸเด™เตเด™เตเดจเตเดจเต (เด‡เตปเดกเด•เตเดธเต เดธเตเด•เดพเตป) เดตเตเดฏเดตเดธเตเดฅเด•เดณเตเดŸเต† เด—เตเดฐเต‚เดชเตเดชเตเด•เตพ เดชเตเดฐเด•เดพเดฐเด‚
  4. เดธเดฌเตโ€Œเด•เตเดตเดฑเดฟเด•เดณเตเดŸเต† เด†เดดเดคเตเดคเดฟเดฒเตเดณเตเดณ เด•เต‚เดŸเตเด•เต†เดŸเตเดŸเตฝ เดชเดพเดดเตโ€Œเดธเดฟเด‚เด—เต เดตเดณเดฐเต† เดชเตเดฐเดถเตโ€Œเดจเด•เดฐเดฎเดพเด•เตเด•เตเดจเตเดจเต SQL เดชเตเดฐเดธเตเดคเดพเดตเดจเด•เตพ เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเดฐเตเดŸเต† เดญเดพเด—เดคเตเดคเตเดจเดฟเดจเตเดจเตเด‚ เด…เดจเตเดตเต‡เดทเดฃ เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดตเดฟเดถเด•เดฒเดจเดตเตเด‚ DBA

เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป เดฐเต€เดคเดฟเด•เตพ

เด‡เดจเดฟ เดจเดฎเตเด•เตเด•เต เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป เดฐเต€เดคเดฟเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดจเต‡เดฐเดฟเดŸเตเดŸเต เดชเต‹เด•เดพเด‚.

1) เด…เดงเดฟเด• เดธเต‚เดšเดฟเด•

เดชเตเดฐเดงเดพเดจ เดธเต†เดฒเด•เตเดทเตป เดŸเต‡เดฌเดฟเดณเตเด•เดณเดฟเตฝ เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เตพ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต, เด•เดพเดฐเดฃเด‚ เดฎเดฟเด•เตเด•เดชเตเดชเต‹เดดเตเด‚ เดฎเตเดดเตเดตเตป เด…เดจเตเดตเต‡เดทเดฃเดตเตเด‚ เด’เดจเตเดจเต‹ เดฐเดฃเตเดŸเต‹ เดชเตเดฐเดงเดพเดจ เดŸเต‡เดฌเดฟเดณเตเด•เตพเด•เตเด•เต (เด…เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ-เดชเต€เดชเตเดชเดฟเตพ-เด“เดชเตเดชเดฑเต‡เดทเตปเดธเต), เด’เดฐเต เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดตเตเดฏเดตเดธเตเดฅเด•เตพ (เด‡เดธเตเด•เตเดฒเต‹เดธเตเดกเต, เด•เตเดฏเดพเตปเดธเตฝเดกเต, เดŽเดจเต‡เดฌเดฟเตพเดกเต, เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเต) เดŽเดจเตเดจเดฟเดตเดฏเต† เดšเตเดฑเตเดฑเดฟเดชเตเดชเดฑเตเดฑเดฟเดฏเดพเดฃเต เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต. เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดžเตเดž เดธเดพเดฎเตเดชเดฟเดณเตเด•เตพเด•เตเด•เต เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฏ เดธเต‚เดšเดฟเด•เด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต.

เดˆ เดซเต€เตฝเดกเตเด•เตพ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเดฎเตเดชเต‹เตพ เดˆ เดชเดฐเดฟเดนเดพเดฐเด‚ เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต เด…เดจเตเดตเต‡เดทเดฃเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เดฟเดฏ เดธเต†เดฑเตเดฑเดฟเดจเต† เด—เดฃเตเดฏเดฎเดพเดฏเดฟ เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเต.

เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดžเด™เตเด™เตพเด•เตเด•เต 500000 เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เด‰เดฃเตเดŸเต. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดธเดœเต€เดตเดฎเดพเดฏ 2000 เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดฎเดพเดคเตเดฐเดฎเต‡เดฏเตเดณเตเดณเต‚. เด…เดชเตเดชเต‹เตพ เดถเดฐเดฟเดฏเดพเดฏเดฟ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดค เด’เดฐเต เดธเต‚เดšเดฟเด• เดจเดฎเตเดฎเต† เดฐเด•เตเดทเดฟเด•เตเด•เตเด‚ เด‡เตปเดกเด•เตเดธเต เดธเตเด•เดพเตป เด’เดฐเต เดตเดฒเดฟเดฏ เดŸเต‡เดฌเดฟเดณเดฟเตฝ, เด’เดฐเต เดจเต‹เตบ-เด•เตเดฒเดธเตเดฑเตเดฑเต‡เตผเดกเต เด‡เตปเดกเด•เตเดธเดฟเดฒเต‚เดŸเต† เดตเต‡เด—เดคเตเดคเดฟเตฝ เดกเดพเดฑเตเดฑ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚.

เด•เต‚เดŸเดพเดคเต†, เด…เดจเตเดตเต‡เดทเดฃ เดชเตเดฒเดพเดจเตเด•เตพ เดชเดพเดดเตโ€Œเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต‹ เดธเดฟเดธเตเดฑเตเดฑเด‚ เดตเตเดฏเต‚ เดธเตเดฅเดฟเดคเดฟเดตเดฟเดตเดฐเด•เตเด•เดฃเด•เตเด•เตเด•เตพ เดถเต‡เด–เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต‹ เด‰เดณเตเดณ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เดณเดฟเดฒเต‚เดŸเต† เดธเต‚เดšเดฟเด•เด•เดณเตเดŸเต† เด…เดญเดพเดตเด‚ เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚. MS SQL เดธเต†เตผเดตเตผ:

  1. sys.dm_db_missing_index_groups
  2. sys.dm_db_missing_index_group_stats
  3. sys.dm_db_missing_index_details

เดŽเดฒเตเดฒเดพ เด•เดพเดดเตเดš เดกเดพเดฑเตเดฑเดฏเดฟเดฒเตเด‚ เดธเตเดชเต‡เดทเตเดฏเตฝ เดธเต‚เดšเดฟเด•เด•เตพ เด’เดดเดฟเด•เต† เดจเดทเตโ€ŒเดŸเดฎเดพเดฏ เดธเต‚เดšเดฟเด•เด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดธเต‚เดšเดฟเด•เด•เดณเตเด‚ เด•เดพเดทเดฟเด‚เด—เตเด‚ เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เดฎเต‹เดถเดฎเดพเดฏเดฟ เดŽเดดเตเดคเดฟเดฏเดคเดฟเตปเตเดฑเต† เด…เดจเดจเตเดคเดฐเดซเดฒเด™เตเด™เดณเต† เดšเต†เดฑเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฐเต€เดคเดฟเด•เดณเดพเดฃเต LINQ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ ะธ SQL เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ.

เดœเต€เดตเดฟเดคเดคเตเดคเดฟเตปเตเดฑเต† เด•เด เดฟเดจเดฎเดพเดฏ เดธเดฎเตเดชเตเดฐเดฆเดพเดฏเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเต‹เดฒเต†, เดšเดฟเดฒ เดธเดฎเดฏเดชเดฐเดฟเดงเดฟเด•เตเด•เตเดณเตเดณเดฟเตฝ เดฌเดฟเดธเดฟเดจเดธเต เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเต เด’เดฐเต เดฌเดฟเดธเดฟเดจเดธเตเดธเดฟเดจเต เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต. เด…เดคเดฟเดจเดพเตฝ, เด•เดจเดคเตเดค เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เด•เดพเดทเดฟเด‚เด—เต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเดถเตเดšเดพเดคเตเดคเดฒเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเตเดจเตเดจเต.

เด‡เดคเต เดญเดพเด—เดฟเด•เดฎเดพเดฏเดฟ เดจเตเดฏเดพเดฏเต€เด•เดฐเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต, เด•เดพเดฐเดฃเด‚ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดกเดพเดฑเตเดฑ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ, เด•เต‚เดŸเดพเดคเต† เด‰เดชเดฏเต‹เด•เตเดคเตƒ เด‡เตปเตเดฑเตผเดซเต‡เดธเดฟเตปเตเดฑเต† เดชเตเดฐเดคเดฟเด•เดฐเดฃเดคเตเดคเดฟเตปเตเดฑเต† เดธเตเดตเต€เด•เดพเดฐเตเดฏเดฎเดพเดฏ เดคเดฒเดฎเตเดฃเตเดŸเต.

เดˆ เดธเดฎเต€เดชเดจเด‚ เดฌเดฟเดธเดฟเดจเดธเต เด†เดตเดถเตเดฏเด™เตเด™เตพ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เด†เดคเตเดฏเดจเตเดคเดฟเด•เดฎเดพเดฏเดฟ เดชเตเดฐเดถเตเดจเด™เตเด™เตพเด•เตเด•เตเดณเตเดณ เดชเดฐเดฟเดนเดพเดฐเด™เตเด™เตพ เดตเตˆเด•เดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เดตเดฟเดตเดฐ เดธเด‚เดตเดฟเดงเดพเดจเดคเตเดคเดฟเตปเตเดฑเต† เดชเตเดฐเด•เดŸเดจเด‚ เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเต.

เดšเต‡เตผเด•เตเด•เดพเตป เด†เดตเดถเตเดฏเดฎเดพเดฏ เดธเต‚เดšเดฟเด•เด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ, เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เดŽเดจเตเดจเดคเตเด‚ เด“เตผเดฎเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดพเดฃเต MS SQL เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดตเตเดฏเดตเดธเตเดฅเด•เตพ เด‰เตพเดชเตเดชเต†เดŸเต† เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป เดคเต†เดฑเตเดฑเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚:

  1. เดธเดฎเดพเดจเดฎเดพเดฏ เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดซเต€เตฝเดกเตเด•เดณเตเดณเตเดณ เดธเต‚เดšเดฟเด•เด•เตพ เด‡เดคเดฟเดจเด•เด‚ เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ
  2. เด‡เตปเดกเต†เด•เตเดธเดฟเด‚เด—เต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เตพ เด•เดพเดฐเดฃเด‚ เดชเดŸเตเดŸเดฟเด•เดฏเดฟเดฒเต† เดซเต€เตฝเดกเตเด•เตพ เดธเต‚เดšเดฟเด•เดฏเดฟเดฒเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ (เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต เด‡เดตเดฟเดŸเต†).

2) เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเตเด•เตพ เด’เดฐเต เดชเตเดคเดฟเดฏ เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเดฟเดฒเต‡เด•เตเด•เต เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

เดšเดฟเดฒเดชเตเดชเต‹เตพ เด’เดฐเต เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดšเดฟเดฒ เดซเต€เตฝเดกเตเด•เตพ, เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดตเตเดฏเดตเดธเตเดฅเด•เตพเด•เตเด•เต เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเดฏเดฟ เดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เด’เดฐเต เดชเตเดคเดฟเดฏ เดซเต€เตฝเดกเต เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเต เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เดพเด‚.

เด‡เดคเต เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดฌเดฟเดฑเตเดฑเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเต‚เตผเดฃเตเดฃเดธเด‚เด–เตเดฏ เด†เดฏ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเต เดซเต€เตฝเดกเตเด•เตพเด•เตเด•เต เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเตเด‚ เดธเดคเตเดฏเดฎเดพเดฃเต.

เด‰เดฆเดพเดนเดฐเดฃเด‚:

เด…เดŸเดšเตเดšเต = 0, เดฑเดฆเตเดฆเดพเด•เตเด•เดฟ = 0, เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดฟ = 0 เดชเด•เดฐเด‚ เดตเดฏเตเด•เตเด•เตเดจเตเดจเดคเต เดจเดฟเดฒ = 1.

เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดˆ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเตเด•เตพ เดชเต‹เดชเตเดชเตเดฒเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เดพเตป เดชเต‚เตผเดฃเตเดฃเดธเด‚เด–เตเดฏ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเต เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเต เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เด‡เดตเดฟเดŸเต†เดฏเดพเดฃเต. เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดˆ เดชเตเดคเดฟเดฏ เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเต เดธเต‚เดšเดฟเด•เดฏเดฟเดฒเดพเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดจเดพเดตเดถเตเดฏ เด•เดฃเด•เตเด•เตเด•เต‚เดŸเตเดŸเดฒเตเด•เดณเดฟเดฒเตเดฒเดพเดคเต† เดžเด™เตเด™เตพ เดกเดพเดฑเตเดฑ เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเตฝ เดชเตเดฐเด•เดŸเดจ เดชเตเดฐเดถเตโ€Œเดจเดคเตเดคเดฟเดจเตเดณเตเดณ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดชเดฐเดฟเดนเดพเดฐเดฎเดพเดฃเดฟเดคเต.

3) เด•เดพเดดเตเดšเดฏเตเดŸเต† เดญเต—เดคเดฟเด•เดตเตฝเด•เตเด•เดฐเดฃเด‚

เดจเดฟเตผเดญเดพเด—เตเดฏเดตเดถเดพเตฝ, เด‡เตป LINQ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด• เดชเดŸเตเดŸเดฟเด•เด•เตพ, เดธเดฟเดŸเดฟเด‡เด•เตพ, เดŸเต‡เดฌเดฟเตพ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดŽเดจเตเดจเดฟเดต เดจเต‡เดฐเดฟเดŸเตเดŸเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ.

เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดˆ เด•เต‡เดธเดฟเตฝ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเดพเตป เดฎเดฑเตเดฑเตŠเดฐเต เดตเดดเดฟเดฏเตเดฃเตเดŸเต - เดธเต‚เดšเดฟเด•เดฏเดฟเดฒเตเดณเตเดณ เด•เดพเดดเตเดšเด•เตพ.

เด…เดตเดธเตเดฅ เด—เตเดฐเต‚เดชเตเดชเต (เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต) เด…เดŸเดšเตเดšเต = 0, เดฑเดฆเตเดฆเดพเด•เตเด•เดฟ = 0, เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดฟ = 0 (เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดธเดฎเดพเดจเดฎเดพเดฏ เดฎเดฑเตเดฑเต เดตเตเดฏเดตเดธเตเดฅเด•เดณเตเดŸเต† เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚) เด’เดฐเต เดตเดฒเดฟเดฏ เดธเต†เดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดธเตเดฒเตˆเดธเต เด•เดพเดทเต† เดšเต†เดฏเตโ€Œเดคเต เด’เดฐเต เด‡เตปเดกเด•เตโ€Œเดธเต เดšเต†เดฏเตโ€Œเดค เด•เดพเดดเตโ€Œเดšเดฏเดฟเตฝ เด…เดต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดจเดฒเตเดฒ เด“เดชเตเดทเดจเดพเดฏเดฟ เดฎเดพเดฑเตเดจเตเดจเต.

เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เด•เดพเดดเตโ€Œเดš เดฏเดพเดฅเดพเตผเดคเตเดฅเตเดฏเดฎเดพเด•เตเด•เตเดฎเตเดชเต‹เตพ เดจเดฟเดฐเดตเดงเดฟ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เดณเตเดฃเตเดŸเต:

  1. เดธเดฌเตเด•เตเดตเดฑเดฟเด•เดณเตเดŸเต† เด‰เดชเดฏเต‹เด—เด‚, เด‰เดชเดตเดพเด•เตเดฏเด™เตเด™เตพ เดŽเด•เตเดธเดฟเดธเตเดฑเตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฎเดพเดฑเตเดฑเดฟ เดธเตเดฅเดพเดชเดฟเด•เตเด•เดฃเด‚ เดšเต‡เดฐเตเด•
  2. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดตเดพเด•เตเดฏเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ UNION, UNION เดŽเดฒเตเดฒเดพเด‚, เด’เดดเดฟเดตเดพเด•เตเด•เตฝ, เด‡เดจเตเดฑเตผเดธเต†เด•เตเดฑเตเดฑเต
  3. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเดŸเตเดŸเดฟเด• เดธเต‚เดšเดจเด•เดณเตเด‚ เด‰เดชเดตเดพเด•เตเดฏเด™เตเด™เดณเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ เด“เดชเตเดทเตป
  4. เดธเตˆเด•เตเด•เดฟเดณเตเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดคเดฏเดฟเดฒเตเดฒ
  5. เดตเตเดฏเดคเตเดฏเดธเตเดค เดชเดŸเตเดŸเดฟเด•เด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เด•เดพเดดเตเดšเดฏเดฟเตฝ เดกเดพเดฑเตเดฑ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เด…เดธเดพเดงเตเดฏเดฎเดพเดฃเต

เด’เดฐเต เด‡เตปเดกเด•เตโ€Œเดธเต เดšเต†เดฏเตโ€Œเดค เด•เดพเดดเตโ€Œเดš เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตปเตเดฑเต† เดฏเดฅเดพเตผเดคเตเดฅ เดจเต‡เดŸเตเดŸเด‚ เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดธเต‚เดšเดฟเด•เดฏเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เดฎเดพเดคเตเดฐเดฎเต‡ เดจเต‡เดŸเดพเดจเดพเด•เต‚ เดŽเดจเตเดจเดคเต เด“เตผเดคเตเดคเดฟเดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต.

เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เด•เดพเดดเตเดš เดตเดฟเดณเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดˆ เดธเต‚เดšเดฟเด•เด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต‡เด•เตเด•เดฟเดฒเตเดฒ, เด…เดต เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฃเด‚ (เดจเต‹เดŽเด•เตเดธเตเดชเดพเตปเดกเต).

เด‰เดณเตเดณเดคเต เดฎเตเดคเตฝ LINQ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ เดชเดŸเตเดŸเดฟเด• เดธเต‚เดšเดจเด•เตพ เดจเดฟเตผเดตเดšเดฟเด•เตเด•เตเดจเตเดจเดคเต เด…เดธเดพเดงเตเดฏเดฎเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เดฎเดฑเตเดฑเตŠเดฐเต เดชเตเดฐเดพเดคเดฟเดจเดฟเดงเตเดฏเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต - เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดซเต‹เดฎเดฟเตปเตเดฑเต† "เดฑเดพเดชเตเดชเตผ":

CREATE VIEW ะ˜ะœะฏ_ะฟั€ะตะดัั‚ะฐะฒะปะตะฝะธั AS SELECT * FROM MAT_VIEW WITH (NOEXPAND);

4) เดŸเต‡เดฌเดฟเตพ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต

เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เด…เด•เดคเตเดคเต LINQ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เด˜เดŸเดจเดฏเตเดณเตเดณ เด•เดพเดดเตเดšเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดธเดฌเตโ€Œเด•เตเดตเดฑเดฟเด•เดณเตเดŸเต†เดฏเต‹ เดฌเตเดฒเต‹เด•เตเด•เตเด•เดณเตเดŸเต†เดฏเต‹ เดตเดฒเดฟเดฏ เดฌเตเดฒเต‹เด•เตเด•เตเด•เตพ เดตเดณเดฐเต† เดธเด™เตเด•เต€เตผเดฃเตเดฃเดตเตเด‚ เด‰เดชเต‹เตฝเดชเตเดชเดจเตเดจเดตเตเดฎเดพเดฏ เดจเดฟเตผเดตเตเดตเดนเดฃ เด˜เดŸเดจเดฏเตเดณเตเดณ เด…เดจเตเดคเดฟเดฎ เด…เดจเตเดตเต‡เดทเดฃเดฎเดพเดฏเดฟ เดฎเดพเดฑเตเดจเตเดจเต.

เดŸเต‡เดฌเดฟเตพ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตปเตเดฑเต† เดชเตเดฐเดงเดพเดจ เดจเต‡เดŸเตเดŸเด™เตเด™เตพ LINQ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ:

  1. เด•เดพเดดเตเดšเด•เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเดฒเต†เดจเตเดจเดชเต‹เดฒเต†, เด’เดฐเต เด’เดฌเตเดœเด•เตเดฑเตเดฑเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเดจเตเดฎเตเดณเตเดณ เด•เดดเดฟเดตเต, เดŽเดจเตเดจเดพเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เด‡เตปเดชเตเดŸเตเดŸเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เด•เตˆเดฎเดพเดฑเดพเตป เด•เดดเดฟเดฏเตเด‚:
    เดซเด‚เด—เตเดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเต (@เดชเดฐเด‚1, @เดชเดฐเด‚2 ...)
    เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดซเตเดฒเต†เด•เตเดธเดฟเดฌเดฟเตพ เดกเดพเดฑเตเดฑ เดธเดพเดฎเตเดชเดฟเตพ เดจเต‡เดŸเดพเดจเดพเด•เตเด‚
  2. เด’เดฐเต เดŸเต‡เดฌเดฟเตพ เดซเด‚เด—เตโ€Œเดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดฎเตเด•เดณเดฟเตฝ เดตเดฟเดตเดฐเดฟเดšเตเดš เด‡เตปเดกเด•เตโ€Œเดธเต เดšเต†เดฏเตโ€Œเดค เด•เดพเดดเตโ€Œเดšเด•เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเดฒเต†เดจเตเดจเดชเต‹เดฒเต† เดถเด•เตเดคเดฎเดพเดฏ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เดณเตŠเดจเตเดจเตเดฎเดฟเดฒเตเดฒ:
    1. เดชเดŸเตเดŸเดฟเด• เดธเต‚เดšเดจเด•เตพ:
      เดฎเตเด–เดพเดจเตเดคเดฟเดฐเด‚ เดฒเดฟเด™เตเด•เต เดเดคเต เดธเต‚เดšเดฟเด•เด•เดณเดพเดฃเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต†เดจเตเดจเต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเดจเตเด‚ เด…เดจเตเดตเต‡เดทเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดกเดพเดฑเตเดฑ เดเดธเตŠเดฒเต‡เดทเตป เดจเดฟเดฒ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เดพเดจเตเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดดเดฟเดฏเดฟเดฒเตเดฒ.
      เดŽเดจเตเดจเดพเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเต เดˆ เด•เดดเดฟเดตเตเด•เดณเตเดฃเตเดŸเต.
      เดซเด‚เด—เตโ€Œเดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเตเดฅเดฟเดฐเดฎเดพเดฏ เด’เดฐเต เดŽเด•เตโ€Œเดธเดฟเด•เตเดฏเต‚เดทเตป เด•เตเดตเดฑเดฟ เดชเตเดฒเดพเตป เดจเต‡เดŸเดพเดจเดพเด•เตเด‚, เด…เดตเดฟเดŸเต† เดธเต‚เดšเดฟเด•เด•เดณเตเด‚ เดกเดพเดฑเตเดฑ เดเดธเตŠเดฒเต‡เดทเตป เดฒเต†เดตเดฒเตเด•เดณเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดฟเดฏเดฎเด™เตเด™เตพ เดจเดฟเตผเดตเดšเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต.
    2. เด‡เตปเดกเด•เตโ€Œเดธเต เดšเต†เดฏเตโ€Œเดค เด•เดพเดดเตโ€Œเดšเด•เดณเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเดชเตเดชเต†เดŸเตเดคเตเดคเตเดฎเตเดชเต‹เตพ, เดซเด‚เด—เตโ€Œเดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดจเต‡เดŸเดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต:
      • เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดธเดพเดฎเตเดชเดฟเตพ เดฒเต‹เดœเดฟเด•เต (เดฒเต‚เดชเตเดชเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเดฒเตเด‚)
      • เดตเดฟเดตเดฟเดง เดŸเต‡เดฌเดฟเดณเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดจเต‡เดŸเตเดจเตเดจเต
      • เด‰เดชเดฏเต‡เดพเด—เด‚ UNION ะธ เดŽเด•เตเดธเดฟเดธเตเดฑเตเดฑเตเด•เตพ

  3. เด“เดซเตผ เด“เดชเตเดทเตป เดจเดฎเตเด•เตเด•เต เด•เตบเด•เดฑเตปเดธเดฟ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด‚ เดจเตฝเด•เต‡เดฃเตเดŸเดฟเดตเดฐเตเดฎเตเดชเต‹เตพ เดตเดณเดฐเต† เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฃเต เด“เดชเตเดทเตป (MAXDOP N), เด…เดจเตเดตเต‡เดทเดฃ เดจเดฟเตผเดตเตเดตเดนเดฃ เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เด•เตเดฐเดฎเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต:
    • เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดจเตเดตเต‡เดทเดฃ เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดจเดฟเตผเดฌเดจเตเดงเดฟเดค เดชเตเดจเดƒเดธเตƒเดทเตเดŸเดฟ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ เด“เดชเตเดทเตป (เดฑเต€ เด•เต‹เดฎเตเดชเตˆเตฝ)
    • เด…เดจเตเดตเต‡เดทเดฃเดคเตเดคเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏ เดœเต‹เดฏเดฟเตป เด“เตผเดกเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด…เดจเตเดตเต‡เดทเดฃ เดชเดฆเตเดงเดคเดฟเดฏเต† เดจเดฟเตผเดฌเดจเตเดงเดฟเด•เตเด•เดฃเต‹ เดŽเดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ เด“เดชเตโ€Œเดทเตป (เดซเต‹เดดเตโ€Œเดธเต เด“เตผเดกเตผ)

    เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เด“เดชเตเดทเตป เดตเดฟเดตเดฐเดฟเดšเตเดšเต เด‡เดตเดฟเดŸเต†.

  4. เด‡เดŸเตเด™เตเด™เดฟเดฏเดคเตเด‚ เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดคเตเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดธเตเดฒเตˆเดธเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต:
    เด•เดพเดทเต†เด•เดณเดฟเตฝ เดตเดฒเดฟเดฏ เดกเดพเดฑเตเดฑเดพ เดธเต†เดฑเตเดฑเตเด•เตพ เดธเด‚เดญเดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ (เด‡เตปเดกเด•เตโ€Œเดธเต เดšเต†เดฏเตโ€Œเดค เด•เดพเดดเตโ€Œเดšเด•เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเดฒเต†เดจเตเดจเดชเต‹เดฒเต†), เด…เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเด™เตเด™เตพ เด‡เดชเตเดชเต‹เดดเตเด‚ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดชเตเดฐเด•เดพเดฐเด‚ เดกเดพเดฑเตเดฑ เดซเดฟเตฝเดŸเตเดŸเตผ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.
    เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดซเดฟเตฝเดŸเตเดŸเตผ เด‰เดณเตเดณ เด’เดฐเต เดชเดŸเตเดŸเดฟเด•เดฏเตเดฃเตเดŸเต เดŽเดตเดฟเดŸเต† เดฎเต‚เดจเตเดจเต เดซเต€เตฝเดกเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต (เดŽ, เดฌเดฟ, เดธเดฟ).

    เดชเดฐเดฎเตเดชเดฐเดพเด—เดคเดฎเดพเดฏเดฟ, เดŽเดฒเตเดฒเดพ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพเด•เตเด•เตเด‚ เด’เดฐเต เดธเตเดฅเดฟเดฐเดฎเดพเดฏ เด…เดตเดธเตเดฅเดฏเตเดฃเตเดŸเต a = 0, b = 0.

    เดŽเด™เตเด•เดฟเดฒเตเด‚ เดตเดฏเดฒเดฟเดจเต เด…เดชเต‡เด•เตเดท c เด•เต‚เดŸเตเดคเตฝ เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ.

    เดตเตเดฏเดตเดธเตเดฅ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด• a = 0, b = 0 เด†เดตเดถเตเดฏเดฎเดพเดฏ เดซเดฒเดฎเดพเดฏเดฟ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจ เดธเต†เดฑเตเดฑเต เด†เดฏเดฟเดฐเด•เตเด•เดฃเด•เตเด•เดฟเดจเต เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เด‡เดคเต เดถเดฐเดฟเด•เตเด•เตเด‚ เดžเด™เตเด™เดณเต† เดธเดนเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเต, เดชเด•เตเดทเต‡ เดตเตเดฏเดตเดธเตเดฅ เด“เดฃเดพเดฃเต ั เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดฒเดฟเดจเต† เดจเต‚เดฑเต เดฑเต†เด•เตเด•เต‹เดกเตเด•เดณเดพเดฏเดฟ เดšเตเดฐเตเด•เตเด•เตเดจเตเดจเต.

    เด‡เดตเดฟเดŸเต† เดŸเต‡เดฌเดฟเตพ เดซเด‚เด—เตโ€Œเดทเตป เด’เดฐเต เดฎเดฟเด•เดšเตเดš เด“เดชเตเดทเดจเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚.

    เด•เต‚เดŸเดพเดคเต†, เด’เดฐเต เดŸเต‡เดฌเดฟเตพ เดซเด‚เด—เตโ€Œเดทเตป เด•เต‚เดŸเตเดคเตฝ เดชเตเดฐเดตเดšเดฟเด•เตเด•เดพเดตเตเดจเตเดจเดคเตเด‚ เดจเดฟเตผเดตเตเดตเดนเดฃ เดธเดฎเดฏเดคเตเดคเต เดธเตเดฅเดฟเดฐเดคเดฏเตเดณเตเดณเดคเตเดฎเดพเดฃเต.

เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ

เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ เดšเต‹เดฆเตเดฏเด™เตเด™เดณเตเดŸเต† เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเต เดจเต‹เด•เตเด•เดพเด‚.

เด’เดฐเต เด…เดชเต‡เด•เตเดทเดฏเตเดฃเตเดŸเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด•, เด‡เดคเต เดจเดฟเดฐเดตเดงเดฟ เดชเดŸเตเดŸเดฟเด•เด•เตพ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเดšเตเดšเต เด’เดฐเต เด•เดพเดดเตโ€Œเดš เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต (เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเต€เดตเต เดšเต‹เดฆเตเดฏเด™เตเด™เตพ), เด…เดคเดฟเตฝ เด…เดซเดฟเดฒเดฟเดฏเต‡เดทเตป เด‡เดฎเต†เดฏเดฟเตฝ เดตเดดเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต (เดตเดดเดฟ เดŽเด•เตเดธเดฟเดธเตเดฑเตเดฑเตเด•เตพ) "เดธเดœเต€เดต เดšเต‹เดฆเตเดฏเด™เตเด™เตพ" ([เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเต€เดตเต เดšเต‹เดฆเตเดฏเด™เตเด™เตพ]):

เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดฎเตเดชเตผ 1

(@p__linq__0 nvarchar(4000))SELECT
1 AS [C1],
[Extent1].[Id] AS [Id],
[Join2].[Object_Id] AS [Object_Id],
[Join2].[ObjectType_Id] AS [ObjectType_Id],
[Join2].[Name] AS [Name],
[Join2].[ExternalId] AS [ExternalId]
FROM [dbo].[Questions] AS [Extent1]
INNER JOIN (SELECT [Extent2].[Object_Id] AS [Object_Id],
[Extent2].[Question_Id] AS [Question_Id], [Extent3].[ExternalId] AS [ExternalId],
[Extent3].[ObjectType_Id] AS [ObjectType_Id], [Extent4].[Name] AS [Name]
FROM [dbo].[ObjectQuestions] AS [Extent2]
INNER JOIN [dbo].[Objects] AS [Extent3] ON [Extent2].[Object_Id] = [Extent3].[Id]
LEFT OUTER JOIN [dbo].[ObjectTypes] AS [Extent4] 
ON [Extent3].[ObjectType_Id] = [Extent4].[Id] ) AS [Join2] 
ON [Extent1].[Id] = [Join2].[Question_Id]
WHERE ([Extent1].[AnswerId] IS NULL) AND (0 = [Extent1].[Exp]) AND ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[OperativeQuestions] AS [Extent5]
WHERE (([Extent5].[Email] = @p__linq__0) OR (([Extent5].[Email] IS NULL) 
AND (@p__linq__0 IS NULL))) AND ([Extent5].[Id] = [Extent1].[Id])
));

เด•เดพเดดเตโ€Œเดšเดฏเตโ€Œเด•เตเด•เต เดคเดฟเด•เดšเตเดšเตเด‚ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เด’เดฐเต เด˜เดŸเดจเดฏเตเดฃเตเดŸเต: เด‡เดคเดฟเดจเต เดธเดฌเตโ€Œเด•เตเดตเดฑเดฟ เดœเต‹เดฏเดฟเดจเตเด•เดณเตเด‚ เดธเต‹เตผเดŸเตเดŸเดฟเด‚เด—เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฐเดพเดฏ, เด‡เดคเต เดชเตŠเดคเตเดตเต† เดตเดฟเดญเดต-เด‡เตปเตเดฑเตปเดธเต€เดตเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดฎเดพเดฃเต.

เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเต€เดตเต เดšเต‹เดฆเตเดฏเด™เตเด™เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต เดธเดพเดฎเตเดชเดฟเตพ เดชเดคเดฟเดจเดพเดฏเดฟเดฐเดคเตเดคเต‹เดณเด‚ เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เดณเดพเดฃเต.

เดˆ เดšเต‹เดฆเตเดฏเดคเตเดคเดฟเตปเตเดฑเต† เดชเตเดฐเดงเดพเดจ เดชเตเดฐเดถเตเดจเด‚, เดฌเดพเดนเตเดฏ เด…เดจเตเดตเต‡เดทเดฃเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพเด•เตเด•เดพเดฏเดฟ, [เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเต€เดตเต เดšเต‹เดฆเตเดฏเด™เตเด™เตพ] เด•เดพเดดเตเดšเดฏเดฟเตฝ เด’เดฐเต เด†เดจเตเดคเดฐเดฟเด• เดธเดฌเตเด•เตเดตเดฑเดฟ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต, เด‡เดคเต [เด‡เดฎเต†เดฏเดฟเตฝ] = @p__linq__0 เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตฝ เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เดžเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚ (เดตเดดเดฟ เดŽเด•เตเดธเดฟเดธเตเดฑเตเดฑเตเด•เตพ) เดจเต‚เดฑเตเด•เดฃเด•เตเด•เดฟเดจเต เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เดตเดฐเต†.

เด‰เดชเดšเต‹เดฆเตเดฏเด‚ เด’เดฐเต เดคเดตเดฃ [เด‡เดฎเต†เดฏเดฟเตฝ] = @p__linq__0 เดตเดดเดฟ เดฐเต‡เด–เด•เตพ เด•เดฃเด•เตเด•เดพเด•เตเด•เดฃเดฎเต†เดจเตเดจเต เดคเต‹เดจเตเดจเดฟเดฏเต‡เด•เตเด•เดพเด‚, เดคเตเดŸเตผเดจเตเดจเต เดˆ เดฐเดฃเตเดŸเต เดจเต‚เดฑเต เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เดšเต‹เดฆเตเดฏเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดเดกเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เดฃเด‚, เด•เต‚เดŸเดพเดคเต† เด…เดจเตเดตเต‡เดทเดฃเด‚ เดตเต‡เด—เดคเตเดคเดฟเดฒเดพเด•เตเด‚.

เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดŽเดฒเตเดฒเดพ เดŸเต‡เดฌเดฟเดณเตเด•เตพเด•เตเด•เตเด‚ เด’เดฐเต เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เด•เดฃเด•เตเดทเตป เด‰เดฃเตเดŸเต: เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเต€เดตเต เดšเต‹เดฆเตเดฏเด™เตเด™เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดเดกเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดเดกเดฟ เดšเต‹เดฆเตเดฏเด™เตเด™เดณเตเดŸเต† เด•เดคเตเดคเดฟเดŸเดชเดพเดŸเตเด•เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•, เด‡เดฎเต†เดฏเดฟเตฝ เดตเดดเดฟ เดซเดฟเตฝเดŸเตเดŸเตผ เดšเต†เดฏเตเดฏเตเด•.

เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดŽเดฒเตเดฒเดพ เดชเดคเดฟเดจเดพเดฏเดฟเดฐเด•เตเด•เดฃเด•เตเด•เดฟเดจเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเต€เดตเต เด•เตเดตเดธเตเดฑเตเดฑเตเดฏเตป เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เดณเดฟเดฒเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เด‡เดฎเต†เดฏเดฟเตฝ เดตเดดเดฟ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดฎเดพเดคเตเดฐเดฎเต‡ เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเต‚.

เดชเตเดฐเดตเตผเดคเตเดคเดจเดšเต‹เดฆเตเดฏเด™เตเด™เตพ เดตเดพเดšเด•เด‚ เด•เดพเดฃเตเด•:

เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดฎเตเดชเตผ 2

 
CREATE VIEW [dbo].[OperativeQuestions]
AS
SELECT DISTINCT Q.Id, USR.email AS Email
FROM            [dbo].Questions AS Q INNER JOIN
                         [dbo].ProcessUserAccesses AS BPU ON BPU.ProcessId = CQ.Process_Id 
OUTER APPLY
                     (SELECT   1 AS HasNoObjects
                      WHERE   NOT EXISTS
                                    (SELECT   1
                                     FROM     [dbo].ObjectUserAccesses AS BOU
                                     WHERE   BOU.ProcessUserAccessId = BPU.[Id] AND BOU.[To] IS NULL)
) AS BO INNER JOIN
                         [dbo].Users AS USR ON USR.Id = BPU.UserId
WHERE        CQ.[Exp] = 0 AND CQ.AnswerId IS NULL AND BPU.[To] IS NULL 
AND (BO.HasNoObjects = 1 OR
              EXISTS (SELECT   1
                           FROM   [dbo].ObjectUserAccesses AS BOU INNER JOIN
                                      [dbo].ObjectQuestions AS QBO 
                                                  ON QBO.[Object_Id] =BOU.ObjectId
                               WHERE  BOU.ProcessUserAccessId = BPU.Id 
                               AND BOU.[To] IS NULL AND QBO.Question_Id = CQ.Id));

DbContext-เดฒเต† เดชเตเดฐเดพเดฐเด‚เดญ เด•เดพเดดเตเดš เดฎเดพเดชเตเดชเดฟเด‚เด—เต (EF เด•เต‹เตผ 2)

public class QuestionsDbContext : DbContext
{
    //...
    public DbQuery<OperativeQuestion> OperativeQuestions { get; set; }
    //...
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Query<OperativeQuestion>().ToView("OperativeQuestions");
    }
}

เดชเตเดฐเดพเดฐเด‚เดญ LINQ เด…เดจเตเดตเต‡เดทเดฃเด‚

var businessObjectsData = await context
    .OperativeQuestions
    .Where(x => x.Email == Email)
    .Include(x => x.Question)
    .Select(x => x.Question)
    .SelectMany(x => x.ObjectQuestions,
                (x, bo) => new
                {
                    Id = x.Id,
                    ObjectId = bo.Object.Id,
                    ObjectTypeId = bo.Object.ObjectType.Id,
                    ObjectTypeName = bo.Object.ObjectType.Name,
                    ObjectExternalId = bo.Object.ExternalId
                })
    .ToListAsync();

เดˆ เดชเตเดฐเดคเตเดฏเต‡เด• เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเดฑเตฝ เดฎเดพเดฑเตเดฑเด™เตเด™เดณเดฟเดฒเตเดฒเดพเดคเต†, เดฑเต†เดกเดฟเดฎเต†เดฏเตเดกเต เดซเดฒเด™เตเด™เดณเตเดณเตเดณ ("เด†เด•เตเดฑเตเดฑเต€เดตเต เด•เตเดตเดฑเดฟเด•เตพ") เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดชเดŸเตเดŸเดฟเด• เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เดพเดคเต† เดคเดจเตเดจเต† เดˆ เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดจเตเดณเตเดณ เดชเดฐเดฟเดนเดพเดฐเด‚ เดžเด™เตเด™เตพ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เดกเดพเดฑเตเดฑ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด•เดพเดฒเดฟเด•เดฎเดพเดฏเดฟ เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเด‚ เด’เดฐเต เดธเด‚เดตเดฟเดงเดพเดจเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต. .

เด‡เดคเตŠเดฐเต เดจเดฒเตเดฒ เดชเดฐเดฟเดนเดพเดฐเดฎเดพเดฃเต†เด™เตเด•เดฟเดฒเตเด‚, เดˆ เดชเตเดฐเดถเตเดจเด‚ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเดพเตป เดฎเดฑเตเดฑเตŠเดฐเต เด“เดชเตเดทเตป เด‰เดฃเตเดŸเต.

Operative Questions เด•เดพเดดเตโ€Œเดšเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต [เด‡เดฎเต†เดฏเดฟเตฝ] = @p__linq__0 เดตเดดเดฟเดฏเตเดณเตเดณ เดŽเตปเดŸเตเดฐเดฟเด•เตพ เด•เดพเดทเต† เดšเต†เดฏเตเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดงเดพเดจ เดฒเด•เตเดทเตเดฏเด‚.

เดŸเต‡เดฌเดฟเตพ เดซเด‚เด—เตโ€Œเดทเตป [dbo].[Operative QuestionsUserMail] เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต‡เด•เตเด•เต เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเด•.

เด’เดฐเต เด‡เตปเดชเตเดŸเตเดŸเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเดพเดฏเดฟ เด‡เดฎเต†เดฏเดฟเตฝ เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต†, เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เดจเดฎเตเด•เตเด•เต เดคเดฟเดฐเดฟเด•เต† เดฒเดญเดฟเด•เตเด•เตเด‚:

เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดฎเตเดชเตผ 3


CREATE FUNCTION [dbo].[OperativeQuestionsUserMail]
(
    @Email  nvarchar(4000)
)
RETURNS
@tbl TABLE
(
    [Id]           uniqueidentifier,
    [Email]      nvarchar(4000)
)
AS
BEGIN
        INSERT INTO @tbl ([Id], [Email])
        SELECT Id, @Email
        FROM [OperativeQuestions]  AS [x] WHERE [x].[Email] = @Email;
     
    RETURN;
END

เด‡เดคเต เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เดจเดฟเดถเตเดšเดฏเดฟเดšเตเดš เดกเดพเดฑเตเดฑ เด˜เดŸเดจเดฏเตเดณเตเดณ เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เดจเตฝเด•เตเดจเตเดจเต.

OperativeQuestionsUserMail-เดฒเต‡เด•เตเด•เตเดณเตเดณ เดšเต‹เดฆเตเดฏเด™เตเด™เตพ เด’เดชเตเดฑเตเดฑเดฟเดฎเตฝ เด†เดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด’เดชเตเดฑเตเดฑเดฟเดฎเตฝ เด•เตเดตเดฑเดฟ เดชเตเดฒเดพเดจเตเด•เตพ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚, เด’เดฐเต เด•เตผเดถเดจเดฎเดพเดฏ เด˜เดŸเดจ เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เด…เดฒเตเดฒ เดฑเดฟเดŸเตเดŸเต‡เตบเดธเต เดŸเต‡เดฌเดฟเตพ เดฑเดฟเดŸเตเดŸเต‡เตบ เด†เดฏเดฟเดชเด™เตเด•เต โ‚ฌ |

เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด†เดตเดถเตเดฏเดฎเดพเดฏ เดšเต‹เดฆเตเดฏเด‚ 1 เดšเต‹เดฆเตเดฏเด‚ 4 เด†เดฏเดฟ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต:

เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดฎเตเดชเตผ 4

(@p__linq__0 nvarchar(4000))SELECT
1 AS [C1],
[Extent1].[Id] AS [Id],
[Join2].[Object_Id] AS [Object_Id],
[Join2].[ObjectType_Id] AS [ObjectType_Id],
[Join2].[Name] AS [Name],
[Join2].[ExternalId] AS [ExternalId]
FROM (
    SELECT Id, Email FROM [dbo].[OperativeQuestionsUserMail] (@p__linq__0)
) AS [Extent0]
INNER JOIN [dbo].[Questions] AS [Extent1] ON([Extent0].Id=[Extent1].Id)
INNER JOIN (SELECT [Extent2].[Object_Id] AS [Object_Id], [Extent2].[Question_Id] AS [Question_Id], [Extent3].[ExternalId] AS [ExternalId], [Extent3].[ObjectType_Id] AS [ObjectType_Id], [Extent4].[Name] AS [Name]
FROM [dbo].[ObjectQuestions] AS [Extent2]
INNER JOIN [dbo].[Objects] AS [Extent3] ON [Extent2].[Object_Id] = [Extent3].[Id]
LEFT OUTER JOIN [dbo].[ObjectTypes] AS [Extent4] 
ON [Extent3].[ObjectType_Id] = [Extent4].[Id] ) AS [Join2] 
ON [Extent1].[Id] = [Join2].[Question_Id]
WHERE ([Extent1].[AnswerId] IS NULL) AND (0 = [Extent1].[Exp]);

DbContext (EF Core 2) เดฒเต† เดฎเดพเดชเตเดชเดฟเด‚เด—เต เด•เดพเดดเตเดšเด•เดณเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚

public class QuestionsDbContext : DbContext
{
    //...
    public DbQuery<OperativeQuestion> OperativeQuestions { get; set; }
    //...
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Query<OperativeQuestion>().ToView("OperativeQuestions");
    }
}
 
public static class FromSqlQueries
{
    public static IQueryable<OperativeQuestion> GetByUserEmail(this DbQuery<OperativeQuestion> source, string Email)
        => source.FromSql($"SELECT Id, Email FROM [dbo].[OperativeQuestionsUserMail] ({Email})");
}

เด…เดจเตเดคเดฟเดฎ LINQ เดšเต‹เดฆเตเดฏเด‚

var businessObjectsData = await context
    .OperativeQuestions
    .GetByUserEmail(Email)
    .Include(x => x.Question)
    .Select(x => x.Question)
    .SelectMany(x => x.ObjectQuestions,
                (x, bo) => new
                {
                    Id = x.Id,
                    ObjectId = bo.Object.Id,
                    ObjectTypeId = bo.Object.ObjectType.Id,
                    ObjectTypeName = bo.Object.ObjectType.Name,
                    ObjectExternalId = bo.Object.ExternalId
                })
    .ToListAsync();

เดจเดฟเตผเดตเตเดตเดนเดฃ เดธเดฎเดฏ เด•เตเดฐเดฎเด‚ 200-800 ms, 2-20 ms เดŽเดจเตเดจเดฟเด™เตเด™เดจเต† เด•เตเดฑเดžเตเดžเต, เด…เดคเดพเดฏเดคเต เดชเดคเดฟเดจเดพเดฏเดฟเดฐเดคเตเดคเดฟเดฐเดŸเตเดŸเดฟ เดตเต‡เด—เดคเตเดคเดฟเตฝ.

เดจเดฎเตเดฎเตพ เด‡เดคเต เด•เต‚เดŸเตเดคเตฝ เดถเดฐเดพเดถเดฐเดฟ เดŽเดŸเตเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, 350 ms เดจเต เดชเด•เดฐเด‚ เดจเดฎเตเด•เตเด•เต 8 ms เดฒเดญเดฟเดšเตเดšเต.

เดตเตเดฏเด•เตเดคเดฎเดพเดฏ เดจเต‡เดŸเตเดŸเด™เตเด™เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฎเตเด•เตเด•เต เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเต:

  1. เดตเดพเดฏเดจเดพ เดฒเต‹เดกเดฟเตฝ เดชเตŠเดคเตเดตเดพเดฏ เด•เตเดฑเดตเต,
  2. เดคเดŸเดฏเดพเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดคเดฏเดฟเตฝ เด—เดฃเตเดฏเดฎเดพเดฏ เด•เตเดฑเดตเต
  3. เดถเดฐเดพเดถเดฐเดฟ เดคเดŸเดฏเตฝ เดธเดฎเดฏเด‚ เดธเตเดตเต€เด•เดพเดฐเตเดฏเดฎเดพเดฏ เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเต

เดคเต€เดฐเตเดฎเดพเดจเด‚

เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด•เต‹เดณเตเด•เดณเตเดŸเต† เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเดจเตเด‚ เดฎเดฟเด•เดšเตเดš เดŸเตเดฏเต‚เดฃเดฟเด‚เด—เตเด‚ MS SQL เดฎเตเด–เดพเดจเตเดคเดฟเดฐเด‚ เดฒเดฟเด™เตเด•เต เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเดตเตเดจเตเดจ เด’เดฐเต เดชเตเดฐเดถเตเดจเดฎเดพเดฃเต.

เดˆ เดœเต‹เดฒเดฟเดฏเดฟเตฝ เดถเตเดฐเดฆเตเดงเดฏเตเด‚ เดธเตเดฅเดฟเดฐเดคเดฏเตเด‚ เดตเดณเดฐเต† เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต.

เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเตเดŸเต† เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ:

  1. เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดกเดพเดฑเตเดฑ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต (เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ, เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดค เดกเดพเดฑเตเดฑ เดคเดฐเด™เตเด™เตพ)
  2. เดˆ เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เดถเดฐเดฟเดฏเดพเดฏ เด‡เตปเดกเด•เตโ€Œเดธเดฟเด‚เด—เต เดจเดŸเดคเตเดคเตเด•
  3. เดชเดŸเตเดŸเดฟเด•เด•เตพเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดšเต‡เดฐเตเดจเตเดจ เดตเตเดฏเดตเดธเตเดฅเด•เดณเตเดŸเต† เด•เตƒเดคเตเดฏเดค เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•

เด…เดŸเตเดคเตเดค เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป เด†เดตเตผเดคเตเดคเดจเด‚ เดตเต†เดณเดฟเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเต:

  1. เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเดŸเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดตเตเด‚ เดชเตเดฐเดงเดพเดจ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดซเดฟเตฝเดŸเตเดŸเตผ เดจเดฟเตผเดตเดšเดฟเด•เตเด•เตเดจเตเดจเต
  2. เดธเดฎเดพเดจ เด…เดจเตเดตเต‡เดทเดฃ เดฌเตเดฒเต‹เด•เตเด•เตเด•เตพ เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดตเตเดฏเดตเดธเตเดฅเด•เดณเตเดŸเต† เดตเดฟเดญเดœเดจเด‚ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต
  3. SSMS เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฎเดฑเตเดฑเต GUI-เตฝ SQL Server เดธเตเดตเดฏเด‚ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต SQL เด…เดจเตเดตเต‡เดทเดฃเด‚ (เด’เดฐเต เด‡เตปเตเดฑเตผเดฎเต€เดกเดฟเดฏเดฑเตเดฑเต เดกเดพเดฑเตเดฑ เดธเด‚เดญเดฐเดฃเด‚ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด•, เดˆ เดธเด‚เดญเดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดŸเดพเด•เตเดจเตเดจ เดšเต‹เดฆเตเดฏเด‚ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด• (เดจเดฟเดฐเดตเดงเดฟ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚))
  4. เด…เดตเดธเดพเดจ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ, เดซเดฒเดคเตเดคเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเดฏเดฟ เดŽเดŸเตเด•เตเด•เตเดจเตเดจเต SQL เด…เดจเตเดตเต‡เดทเดฃเด‚, เด˜เดŸเดจ เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต LINQ เดšเต‹เดฆเตเดฏเด‚

เดซเดฒเดฎเดพเดฏเดฟ LINQ เดšเต‹เดฆเตเดฏเด‚ เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดžเตเดž เด’เดชเตเดฑเตเดฑเดฟเดฎเดฒเดฟเดจเต เด˜เดŸเดจเดฏเดฟเตฝ เดธเดฎเดพเดจเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚ SQL เด…เดจเตเดตเต‡เดทเดฃเด‚ เดชเต‹เดฏเดฟเตปเตเดฑเต 3 เดฎเตเดคเตฝ.

เด…เด‚เด—เต€เด•เดพเดฐเด™เตเด™เตพ

เดธเดนเดชเตเดฐเดตเตผเดคเตเดคเด•เตผเด•เตเด•เต เด’เดฐเตเดชเดพเดŸเต เดจเดจเตเดฆเดฟ jobgemws ะธ alex_ozr เด•เดฎเตเดชเดจเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดซเต‹เตผเดŸเตเดŸเดฟเดธเต เดˆ เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเตฝ เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดธเดนเดพเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•