C#.NET เจตเจฟเฉฑเจš LINQ เจธเจตเจพเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจขเฉฐเจ—

เจœเจพเจฃ เจชเจ›เจพเจฃ

ะ’ เจ‡เจธ เจฒเฉ‡เจ– เจ•เฉเจ เจ…เจจเฉเจ•เฉ‚เจฒเจจ เจตเจฟเจงเฉ€เจ†เจ‚ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ LINQ เจธเจตเจพเจฒ.
เจ‡เฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจ•เฉ‹เจก เจ“เจชเจŸเฉ€เจฎเจพเจˆเจœเฉ‡เจธเจผเจจ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจ•เฉเจ เจนเฉ‹เจฐ เจชเจนเฉเฉฐเจš เจตเฉ€ เจชเฉ‡เจธเจผ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ LINQ เจธเจตเจพเจฒ.

เจ‡เจน เจœเจพเจฃเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ LINQ(เจญเจพเจธเจผเจพ-เจเจ•เฉ€เจ•เฉเจฐเจฟเจค เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ›) เจ‡เฉฑเจ• เจกเฉ‡เจŸเจพ เจธเจฐเฉ‹เจค เจฆเฉ€ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฒเจˆ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจ…เจคเฉ‡ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจญเจพเจธเจผเจพ เจนเฉˆเฅค

ะ LINQ เจคเฉ‹เจ‚ SQL เจ‡เฉฑเจ• DBMS เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€ เจนเฉˆเฅค เจ‡เจน เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจธเจผเจ•เจคเฉ€เจธเจผเจพเจฒเฉ€ เจธเฉฐเจฆ เจนเฉˆ, เจœเจฟเฉฑเจฅเฉ‡ เจชเฉเจฐเจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ˜เฉ‹เจธเจผเจฃเจพเจคเจฎเจ• เจญเจพเจธเจผเจพ เจฆเฉเจ†เจฐเจพ เจฌเจฃเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเจธเจจเฉ‚เฉฐ เจซเจฟเจฐ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพ SQL เจธเจตเจพเจฒ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจ…เจคเฉ‡ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฒเจˆ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจญเฉ‡เจœเจฟเจ† เจ—เจฟเจ†เฅค เจธเจพเจกเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, DBMS เจฆเฉเจ†เจฐเจพ เจธเจพเจกเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจเจฎเจเจธ เจเจธเจ•เจฟ Serverเจเจฒ เจธเจฐเจตเจฐ.

เจนเจพเจฒเจพเจ‚เจ•เจฟ, LINQ เจธเจตเจพเจฒ เจตเจงเฉ€เจ† เจฒเจฟเจ–เจคเจพเจ‚ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ SQL เจธเจตเจพเจฒ, เจœเจฟเจธ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจคเจœเจฐเจฌเฉ‡เจ•เจพเจฐ DBA เจ“เจชเจŸเฉ€เจฎเจพเจˆเจœเฉ‡เจธเจผเจจ เจฆเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจฌเจพเจฐเฉ€เจ•เฉ€เจ†เจ‚ เจจเจพเจฒ เจฒเจฟเจ– เจธเจ•เจฆเจพ เจนเฉˆ SQL เจธเจตเจพเจฒ:

  1. เจ…เจจเฉเจ•เฉ‚เจฒ เจ•เฉเจจเฉˆเจ•เจธเจผเจจ (เจธเจผเจพเจฎเจฒ เจนเฉ‹เจตเฉ‹) เจ…เจคเฉ‡ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจซเจฟเจฒเจŸเจฐ เจ•เจฐเจจเจพ (เจ•เจฟเฉฑเจฅเฉ‡)
  2. เจ•เฉเจจเฉˆเจ•เจธเจผเจจเจพเจ‚ เจ…เจคเฉ‡ เจธเจฎเฉ‚เจน เจธเจผเจฐเจคเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจธเฉ‚เจ–เจฎเจคเจพเจตเจพเจ‚
  3. เจธเจฅเจฟเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจญเจฟเฉฐเจจเจคเจพเจตเจพเจ‚ IN 'เจคเฉ‡ เจฎเฉŒเจœเฉ‚เจฆ เจนเฉˆะธ เจ…เฉฐเจฆเจฐ เจจเจนเฉ€เจ‚, <> เจšเจพเจฒเฉ‚ เจฎเฉŒเจœเฉ‚เจฆ เจนเฉˆ
  4. เจ…เจธเจฅเจพเจˆ เจŸเฉ‡เจฌเจฒ, CTE, เจŸเฉ‡เจฌเจฒ เจตเฉ‡เจฐเฉ€เจเจฌเจฒเจธ เจฆเฉเจ†เจฐเจพ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจฆเฉ€ เจตเจฟเจšเจ•เจพเจฐเจฒเฉ€ เจ•เฉˆเจธเจผเจฟเฉฐเจ—
  5. เจตเจพเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ (เจšเฉ‹เจฃ) เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจ…เจคเฉ‡ เจธเจพเจฐเจฃเฉ€ เจฆเฉ‡ เจธเฉฐเจ•เฉ‡เจคเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจฆเฉ‡ เจจเจพเจฒ (...)
  6. เจšเฉ‹เจฃ เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ เจฌเฉ‡เจฒเฉ‹เฉœเฉ‡ เจกเฉ‡เจŸเจพ เจฐเฉ€เจกเจฟเฉฐเจ—เจพเจ‚ เจคเฉ‹เจ‚ เจ›เฉเจŸเจ•เจพเจฐเจพ เจชเจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจธเจพเจงเจจ เจตเจœเฉ‹เจ‚ เจธเฉ‚เจšเฉ€เจฌเฉฑเจง เจฆเฉเจฐเจฟเจธเจผเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ

เจจเจคเฉ€เจœเฉ‡ เจฆเฉ‡ เจฎเฉเฉฑเจ– เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฐเฉเจ•เจพเจตเจŸ SQL เจธเจตเจพเจฒ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ LINQ เจธเจตเจพเจฒ เจ‰เจน เจนเจจ:

  1. เจ‡เฉฑเจ• เจฌเฉ‡เจจเจคเฉ€ เจตเจฟเฉฑเจš เจชเฉ‚เจฐเฉ‡ เจกเฉ‡เจŸเจพ เจšเฉ‹เจฃ เจตเจฟเจงเฉ€ เจฆเจพ เจเจ•เฉ€เจ•เจฐเจจ
  2. เจ•เฉ‹เจก เจฆเฉ‡ เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเฉ‡ เจฌเจฒเจพเจ•เจพเจ‚ เจฆเฉ€ เจกเฉเจชเจฒเฉ€เจ•เฉ‡เจŸเจฟเฉฐเจ—, เจœเฉ‹ เจ†เจ–เจฟเจฐเจ•เจพเจฐ เจ•เจˆ เจฌเฉ‡เจฒเฉ‹เฉœเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฐเฉ€เจก เจ•เจฐเจจ เจตเฉฑเจฒ เจฒเฉˆ เจœเจพเจ‚เจฆเจพ เจนเฉˆ
  3. เจฎเจฒเจŸเฉ€-เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจนเจพเจฒเจคเจพเจ‚ เจฆเฉ‡ เจธเจฎเฉ‚เจน (เจคเจฐเจ•เจชเฉ‚เจฐเจจ โ€œเจ…เจคเฉ‡โ€ เจ…เจคเฉ‡ โ€œเจœเจพเจ‚โ€) - เจ…เจคเฉ‡ ะธ OR, เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจธเจฅเจฟเจคเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจฎเจฟเจฒเจพ เจ•เฉ‡, เจ‡เจธ เจคเฉฑเจฅ เจตเฉฑเจฒ เจ–เฉœเจฆเจพ เจนเฉˆ เจ•เจฟ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค, เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจ–เฉ‡เจคเจฐเจพเจ‚ เจฒเจˆ เจขเฉเจ•เจตเฉ‡เจ‚ เจ—เฉˆเจฐ-เจ•เจฒเฉฑเจธเจŸเจฐเจก เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจนเฉ‹เจฃ เจ•เจฐเจ•เฉ‡, เจ…เฉฐเจค เจตเจฟเฉฑเจš เจ•เจฒเฉฑเจธเจŸเจฐเจก เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจฆเฉ‡ เจตเจฟเจฐเฉเฉฑเจง เจธเจ•เฉˆเจจ เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ (เจ‡เฉฐเจกเฉˆเจ•เจธ เจธเจ•เฉˆเจจ) เจธเจผเจฐเจคเจพเจ‚ เจฆเฉ‡ เจธเจฎเฉ‚เจนเจพเจ‚ เจฆเฉเจ†เจฐเจพ
  4. เจธเจฌเจ•เจตเฉ‡เจฐเฉ€เจ†เจ‚ เจฆเจพ เจกเฉ‚เฉฐเจ˜เจพ เจ†เจฒเฉเจนเจฃเจพ เจชเจพเจฐเจธเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจฌเจนเฉเจค เจธเจฎเฉฑเจธเจฟเจ† เจตเจพเจฒเจพ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ SQL เจธเจŸเฉ‡เจŸเจฎเฉˆเจ‚เจŸเจธ เจ…เจคเฉ‡ เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจฆเฉ€ เจคเจฐเจซเฉ‹เจ‚ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฏเฉ‹เจœเจจเจพ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ…เจคเฉ‡ DBA

เจ…เจจเฉเจ•เฉ‚เจฒเจจ เจขเฉฐเจ—

เจนเฉเจฃ เจ†เจ“ เจ†เจชเจŸเฉ€เจฎเจพเจˆเจœเจผเฉ‡เจธเจผเจจ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจตเฉฑเจฒ เจธเจฟเฉฑเจงเฉ‡ เจšเฉฑเจฒเฉ€เจเฅค

1) เจตเจพเจงเฉ‚ เจ‡เฉฐเจกเฉˆเจ•เจธเจฟเฉฐเจ—

เจฎเฉเฉฑเจ– เจšเฉ‹เจฃ เจŸเฉ‡เจฌเจฒเจพเจ‚ 'เจคเฉ‡ เจซเจฟเจฒเจŸเจฐเจพเจ‚ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเจจเจพ เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจ•เจธเจฐ เจธเจฎเฉเฉฑเจšเฉ€ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจ‡เฉฑเจ• เจœเจพเจ‚ เจฆเฉ‹ เจฎเฉเฉฑเจ– เจŸเฉ‡เจฌเจฒเจพเจ‚ (เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ-เจฒเฉ‹เจ•-เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚) เจ…เจคเฉ‡ เจธเจผเจฐเจคเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจฎเจฟเจ†เจฐเฉ€ เจธเจฎเฉ‚เจน (IsClosed, Canceled, Enabled, Status) เจฆเฉ‡ เจฆเฉเจ†เจฒเฉ‡ เจฌเจฃเจพเจˆ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจชเจ›เจพเจฃเฉ‡ เจ—เจ เจจเจฎเฉ‚เจจเจฟเจ†เจ‚ เจฒเจˆ เจ‰เจšเจฟเจค เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจฌเจฃเจพเจ‰เจฃเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆเฅค

เจ‡เจน เจนเฉฑเจฒ เจ‰เจฆเฉ‹เจ‚ เจธเจฎเจเจฆเจพ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจ‡เจนเจจเจพเจ‚ เจ–เฉ‡เจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจšเฉเจฃเจจเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจคเฉŒเจฐ 'เจคเฉ‡ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฒเจˆ เจตเจพเจชเจธ เจ•เฉ€เจคเฉ‡ เจธเฉˆเฉฑเจŸ เจจเฉ‚เฉฐ เจธเฉ€เจฎเจค เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ 500000 เจ…เจฐเจœเจผเฉ€เจ†เจ‚ เจนเจจเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เฉฑเจฅเฉ‡ เจธเจฟเจฐเจซ 2000 เจเจ•เจŸเจฟเจต เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจนเจจเฅค เจซเจฟเจฐ เจ‡เฉฑเจ• เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจšเฉเจฃเจฟเจ† เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจธเจพเจจเฉ‚เฉฐ เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจšเจพเจเจ—เจพ เจ‡เฉฐเจกเฉˆเจ•เจธ เจธเจ•เฉˆเจจ เจ‡เฉฑเจ• เจตเฉฑเจกเฉ€ เจŸเฉ‡เจฌเจฒ 'เจคเฉ‡ เจนเฉˆ เจ…เจคเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ—เฉˆเจฐ-เจ•เจฒเฉฑเจธเจŸเจฐเจก เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจฆเฉเจ†เจฐเจพ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจกเจพเจŸเจพ เจšเฉเจฃเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเฉ‡เจตเฉ‡เจ—เจพเฅค

เจจเจพเจฒ เจนเฉ€, เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจฆเฉ€ เจ˜เจพเจŸ เจจเฉ‚เฉฐ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจชเจพเจฐเจธ เจ•เจฐเจจ เจœเจพเจ‚ เจธเจฟเจธเจŸเจฎ เจฆเฉเจฐเจฟเจธเจผ เจ…เฉฐเจ•เฉœเฉ‡ เจ‡เจ•เฉฑเจ เฉ‡ เจ•เจฐเจจ เจฒเจˆ เจชเฉเจฐเฉ‹เจ‚เจชเจŸ เจฆเฉเจ†เจฐเจพ เจชเจ›เจพเจฃเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจเจฎเจเจธ เจเจธเจ•เจฟ Serverเจเจฒ เจธเจฐเจตเจฐ:

  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 เจธเจตเจพเจฒ เจ…เจธเจฅเจพเจˆ เจŸเฉ‡เจฌเจฒ, CTE, เจ…เจคเฉ‡ เจŸเฉ‡เจฌเจฒ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจธเจฟเฉฑเจงเฉ‡ เจจเจนเฉ€เจ‚ เจตเจฐเจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค

เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจธ เจ•เฉ‡เจธ เจฒเจˆ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจ•เจฐเจจ เจฆเจพ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจคเจฐเฉ€เจ•เจพ เจนเฉˆ - เจธเฉ‚เจšเฉ€เจฌเฉฑเจง เจฆเฉเจฐเจฟเจธเจผ.

เจธเจฅเจฟเจคเฉ€ เจธเจฎเฉ‚เจน (เจ‰เจชเจฐเฉ‹เจ•เจค เจ‰เจฆเจพเจนเจฐเจจ เจคเฉ‹เจ‚) เจฌเฉฐเจฆ = 0 เจ…เจคเฉ‡ เจฐเฉฑเจฆ = 0 เจ…เจคเฉ‡ เจฏเฉ‹เจ— = 0 (เจœเจพเจ‚ เจนเฉ‹เจฐ เจธเจฎเจพเจจ เจธเจฅเจฟเจคเฉ€เจ†เจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ) เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ‡เฉฐเจกเฉˆเจ•เจธเจก เจฆเฉเจฐเจฟเจธเจผ เจตเจฟเฉฑเจš เจตเจฐเจคเจฃ เจฒเจˆ เจ‡เฉฑเจ• เจตเจงเฉ€เจ† เจตเจฟเจ•เจฒเจช เจฌเจฃ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ‡เฉฑเจ• เจตเฉฑเจกเฉ‡ เจธเจฎเฉ‚เจน เจคเฉ‹เจ‚ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ‡ เจœเจฟเจนเฉ‡ เจŸเฉเจ•เฉœเฉ‡ เจจเฉ‚เฉฐ เจ•เฉˆเจš เจ•เจฐเจจเจพเฅค

เจชเจฐ เจ‡เฉฑเจ• เจฆเฉเจฐเจฟเจธเจผ เจจเฉ‚เฉฐ เจธเจพเจ•เจพเจฐ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจ•เจˆ เจชเจพเจฌเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ:

  1. เจธเจฌเจ•เจตเฉ‡เจฐเฉ€เจ†เจ‚, เจงเจพเจฐเจพเจตเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฎเฉŒเจœเฉ‚เจฆ เจนเฉˆ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจฌเจฆเจฒเจฟเจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจธเจผเจพเจฎเจฒ เจนเฉ‹เจตเฉ‹
  2. เจคเฉเจธเฉ€เจ‚ เจตเจพเจ•เจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจฏเฉ‚เจจเฉ€เจ…เจจ, เจฏเฉ‚เจจเฉ€เจ…เจจ เจธเจพเจฐเฉ‡, เจ›เฉ‚เจŸ, เจ‡เฉฐเจŸเจฐเจธเฉˆเจ•เจŸ
  3. เจคเฉเจธเฉ€เจ‚ เจธเจพเจฐเจฃเฉ€ เจฆเฉ‡ เจธเฉฐเจ•เฉ‡เจคเจพเจ‚ เจ…เจคเฉ‡ เจงเจพเจฐเจพเจตเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจšเฉ‹เจฃ
  4. เจšเฉฑเจ•เจฐเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจˆ เจธเฉฐเจญเจพเจตเจจเจพ เจจเจนเฉ€เจ‚
  5. เจตเฉฑเจ–-เจตเฉฑเจ– เจŸเฉ‡เจฌเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจฆเฉเจฐเจฟเจธเจผ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจจเจพ เจ…เจธเฉฐเจญเจต เจนเฉˆ

เจ‡เจน เจฏเจพเจฆ เจฐเฉฑเจ–เจฃเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆ เจ•เจฟ เจ‡เฉฑเจ• เจ‡เฉฐเจกเฉˆเจ•เจธเจก เจฆเฉเจฐเจฟเจธเจผ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเจพ เจ…เจธเจฒ เจฒเจพเจญ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ‡เจธเจจเฉ‚เฉฐ เจ‡เฉฐเจกเฉˆเจ•เจธ เจ•เจฐเจ•เฉ‡ เจนเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจชเจฐ เจœเจฆเฉ‹เจ‚ เจ•เจฟเจธเฉ‡ เจฆเฉเจฐเจฟเจธเจผ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‡เจน เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจจเจนเฉ€เจ‚ เจตเจฐเจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจ, เจ…เจคเฉ‡ เจ‡เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเจชเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจฐเจคเจฃ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจจเจฟเจธเจผเจšเจฟเจค เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจจเจพเจฒ(NOEXPAND).

เจœเจฆเฉ‹เจ‚ เจคเฉ‹เจ‚ LINQ เจธเจตเจพเจฒ เจธเจพเจฐเจฃเฉ€ เจฆเฉ‡ เจธเฉฐเจ•เฉ‡เจคเจพเจ‚ เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจจเจพ เจ…เจธเฉฐเจญเจต เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจจเฉเจฎเจพเจ‡เฉฐเจฆเจ—เฉ€ เจฌเจฃเจพเจ‰เจฃเฉ€ เจชเจตเฉ‡เจ—เฉ€ - เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจซเจพเจฐเจฎ เจฆเจพ เจ‡เฉฑเจ• "เจฐเฉˆเจชเจฐ":

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

4) เจŸเฉ‡เจฌเจฒ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ

เจ…เจ•เจธเจฐ เจตเจฟเฉฑเจš LINQ เจธเจตเจพเจฒ เจ‡เฉฑเจ• เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจฌเจฃเจคเจฐ เจฆเฉ‡ เจจเจพเจฒ เจฆเฉเจฐเจฟเจธเจผเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจธเจฌเจ•เจตเฉ‡เจฐเฉ€เจ†เจ‚ เจฆเฉ‡ เจตเฉฑเจกเฉ‡ เจฌเจฒเจพเจ• เจœเจพเจ‚ เจฌเจฒเจพเจ• เจ‡เฉฑเจ• เจฌเจนเฉเจค เจนเฉ€ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจ…เจคเฉ‡ เจธเจฌ-เจ“เจชเจŸเฉ€เจฎเจฒ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจ…เฉฐเจคเจฎ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจเฅค

เจตเจฟเฉฑเจš เจŸเฉ‡เจฌเจฒ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ‡ เจฎเฉเฉฑเจ– เจฒเจพเจญ LINQ เจธเจตเจพเจฒ:

  1. เจฏเฉ‹เจ—เจคเจพ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจตเจฟเจฏเฉ‚เจœเจผ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจตเจธเจคเฉ‚ เจฆเฉ‡ เจคเฉŒเจฐ เจคเฉ‡ เจตเจฐเจคเฉ‡ เจœเจพเจฃ เจ…เจคเฉ‡ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเฉ‡ เจœเจพเจฃ เจฆเฉ€, เจชเจฐ เจคเฉเจธเฉ€เจ‚ เจ‡เจจเจชเฉเจŸ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ เจชเจพเจธ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹:
    เจซเฉฐเจ•เจธเจผเจจ เจคเฉ‹เจ‚ (@param1, @param2 ...)
    เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจฒเจšเจ•เจฆเจพเจฐ เจกเจพเจŸเจพ เจจเจฎเฉ‚เจจเจพ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ
  2. เจ‡เฉฑเจ• เจŸเฉ‡เจฌเจฒ เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš, เจ‰เฉฑเจชเจฐ เจฆเฉฑเจธเฉ‡ เจ—เจ เจ‡เฉฐเจกเฉˆเจ•เจธเจก เจตเจฟเจฏเฉ‚เจœเจผ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจ•เฉ‹เจˆ เจธเจ–เจผเจค เจชเจพเจฌเฉฐเจฆเฉ€เจ†เจ‚ เจจเจนเฉ€เจ‚ เจนเจจ:
    1. เจŸเฉ‡เจฌเจฒ เจธเฉฐเจ•เฉ‡เจค:
      เจฆเฉเจ†เจฐเจพ LINQ เจคเฉเจธเฉ€เจ‚ เจ‡เจน เจจเจฟเจฐเจงเจพเจฐเจฟเจค เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจ•เจฟเจนเฉœเฉ€เจ†เจ‚ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจกเจพเจŸเจพ เจ…เจฒเฉฑเจ—-เจฅเจฒเฉฑเจ— เจชเฉฑเจงเจฐ เจฆเจพ เจชเจคเจพ เจฒเจ—เจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค
      เจชเจฐ เจซเฉฐเจ•เจธเจผเจจ เจตเจฟเฉฑเจš เจ‡เจน เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจนเจจเฅค
      เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ‡ เจจเจพเจฒ, เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ•เจพเจซเจผเฉ€ เจจเจฟเจฐเฉฐเจคเจฐ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฏเฉ‹เจœเจจเจพ เจจเฉ‚เฉฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจœเจฟเฉฑเจฅเฉ‡ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจ…เจคเฉ‡ เจกเฉ‡เจŸเจพ เจ†เจˆเจธเฉ‹เจฒเฉ‡เจธเจผเจจ เจชเฉฑเจงเจฐเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ‡ เจจเจฟเจฏเจฎ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจเฅค
    2. เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ, เจ‡เฉฐเจกเฉˆเจ•เจธเจก เจตเจฟเจฏเฉ‚เจœเจผ เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡, เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ:
      • เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจกเจพเจŸเจพ เจจเจฎเฉ‚เจจเจพ เจคเจฐเจ• (เจฒเฉ‚เจชเจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจตเฉ€)
      • เจ•เจˆ เจตเฉฑเจ–-เจตเฉฑเจ– เจŸเฉ‡เจฌเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจกเจพเจŸเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ
      • เจฆเฉ€ เจตเจฐเจคเฉ‹ เจฏเฉ‚เจจเฉ€เจ…เจจ ะธ เจฎเฉŒเจœเฉ‚เจฆ เจนเฉˆ

  3. เจชเฉ‡เจธเจผเจ•เจธเจผ เจšเฉ‹เจฃ เจฌเจนเฉเจค เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจธเจพเจจเฉ‚เฉฐ เจ‡เจ•เจธเจพเจฐเจคเจพ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจตเจฟเจ•เจฒเจช(MAXDOP N), เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจชเจฒเจพเจจ เจฆเจพ เจ•เฉเจฐเจฎเฅค เจ‰เจฆเจพเจนเจฐเจฃ เจฒเจˆ:
    • เจคเฉเจธเฉ€เจ‚ เจ•เจฟเจŠเจฐเฉ€ เจชเจฒเจพเจจ เจฆเฉ€ เจœเจผเจฌเจฐเจฆเจธเจคเฉ€ เจฎเฉเฉœ-เจฐเจšเจจเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจตเจฟเจ•เจฒเจช (เจฎเฉเฉœ เจ•เฉฐเจชเจพเจ‡เจฒ)
    • เจคเฉเจธเฉ€เจ‚ เจจเจฟเจฐเจงเจพเจฐเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจตเจฟเฉฑเจš เจจเจฟเจฐเจฆเจฟเจธเจผเจŸ เจœเฉเจ†เจ‡เจจ เจ†เจฐเจกเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฏเฉ‹เจœเจจเจพ เจจเฉ‚เฉฐ เจฎเจœเจฌเฉ‚เจฐ เจ•เจฐเจจเจพ เจนเฉˆ เจœเจพเจ‚ เจจเจนเฉ€เจ‚ เจตเจฟเจ•เจฒเจช (เจซเฉ‹เจฐเจธ เจ†เจฐเจกเจฐ)

    เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจตเฉ‡เจฐเจตเฉ‡ เจšเฉ‹เจฃ เจฆเฉฑเจธเจฟเจ† เจ—เจฟเจ† เจนเฉˆ เจ‡เฉฑเจฅเฉ‡.

  4. เจธเจญ เจคเฉ‹เจ‚ เจคเฉฐเจ— เจ…เจคเฉ‡ เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจง เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจกเฉ‡เจŸเจพ เจธเจฒเจพเจˆเจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ:
    เจ•เฉˆเจšเจพเจ‚ เจตเจฟเฉฑเจš เจตเฉฑเจกเฉ‡ เจกเฉ‡เจŸเจพ เจธเฉˆเฉฑเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจˆ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ (เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‡เฉฐเจกเฉˆเจ•เจธเจก เจตเจฟเจฏเฉ‚เจœเจผ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš เจนเฉˆ), เจœเจฟเจธ เจคเฉ‹เจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ…เจœเฉ‡ เจตเฉ€ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฆเฉเจ†เจฐเจพ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจซเจฟเจฒเจŸเจฐ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค
    เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• เจธเจพเจฐเจฃเฉ€ เจนเฉˆ เจœเจฟเจธเจฆเจพ เจซเจฟเจฒเจŸเจฐ เจ•เจฟเฉฑเจฅเฉ‡ เจคเจฟเฉฐเจจ เจ–เฉ‡เจคเจฐ เจตเจฐเจคเฉ‡ เจ—เจ เจนเจจ (a, b, c).

    เจฐเจตเจพเจ‡เจคเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡, เจธเจพเจฐเฉ€เจ†เจ‚ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจจเจฟเจฐเฉฐเจคเจฐ เจธเจฅเจฟเจคเฉ€ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ 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])
));

เจฆเฉเจฐเจฟเจธเจผ เจฆเฉ€ เจ‡เฉฑเจ• เจฌเจนเฉเจค เจนเฉ€ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจฌเจฃเจคเจฐ เจนเฉˆ: เจ‡เจธ เจตเจฟเฉฑเจš เจธเจฌเจ•เจตเฉ‡เจฐเฉ€ เจœเฉเฉœเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจ›เจพเจ‚เจŸเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ DISTINCT, เจœเฉ‹ เจ•เจฟ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจ•เจพเจซเจผเฉ€ เจธเฉฐเจธเจพเจงเจจ-เจธเฉฐเจฌเฉฐเจงเฉ€ เจ•เจพเจฐเจตเจพเจˆ เจนเฉˆเฅค

OperativeQuestions เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเจฎเฉ‚เจจเจพ เจฒเจ—เจญเจ— เจฆเจธ เจนเจœเจผเจพเจฐ เจฐเจฟเจ•เจพเจฐเจก เจนเฉˆเฅค

เจ‡เจธ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจจเจพเจฒ เจฎเฉเฉฑเจ– เจธเจฎเฉฑเจธเจฟเจ† เจ‡เจน เจนเฉˆ เจ•เจฟ เจฌเจพเจนเจฐเฉ€ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฆเฉ‡ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจฒเจˆ, เจ‡เฉฑเจ• เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจธเจฌเจ•เจตเฉ‡เจฐเฉ€ [OperativeQuestions] เจฆเฉเจฐเจฟเจธเจผ 'เจคเฉ‡ เจšเจฒเจพเจˆ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ [เจˆเจฎเฉ‡เจฒ] = @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();

เจ‡เจธ เจตเจฟเจธเจผเฉ‡เจธเจผ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจ‡เจธ เจธเจฎเฉฑเจธเจฟเจ† เจฆเฉ‡ เจนเฉฑเจฒ เจฌเจพเจฐเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚, เจฌเจฟเจจเจพเจ‚ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเจพเจ—เจค เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ‡, เจคเจฟเจ†เจฐ เจจเจคเฉ€เจœเจฟเจ†เจ‚ ("เจเจ•เจŸเจฟเจต เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ›") เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจธเจพเจฐเจฃเฉ€ เจชเฉ‡เจธเจผ เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚, เจœเจฟเจธ เจฒเจˆ เจ‡เจธเจจเฉ‚เฉฐ เจกเฉ‡เจŸเจพ เจจเจพเจฒ เจญเจฐเจจ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ…เฉฑเจช เจŸเฉ‚ เจกเฉ‡เจŸ เจฐเฉฑเจ–เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจงเฉ€ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€. .

เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ‡เจน เจ‡เฉฑเจ• เจตเจงเฉ€เจ† เจนเฉฑเจฒ เจนเฉˆ, เจ‡เจธ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจตเจฟเจ•เจฒเจช เจนเฉˆ.

เจฎเฉเฉฑเจ– เจ‰เจฆเฉ‡เจธเจผ OperativeQuestions เจฆเฉเจฐเจฟเจธเจผ เจคเฉ‹เจ‚ [Email] = @p__linq__0 เจฆเฉเจ†เจฐเจพ เจเจ‚เจŸเจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจ•เฉˆเจธเจผ เจ•เจฐเจจเจพ เจนเฉˆเฅค

เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจŸเฉ‡เจฌเจฒ เจซเฉฐเจ•เจธเจผเจจ [dbo] [OperativeQuestionsUserMail] เจจเฉ‚เฉฐ เจชเฉ‡เจธเจผ เจ•เจฐเฉ‹เฅค

เจ‡เฉฑเจ• เจ‡เจจเจชเฉเจŸ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจตเจœเฉ‹เจ‚ เจˆเจฎเฉ‡เจฒ เจญเฉ‡เจœ เจ•เฉ‡, เจ…เจธเฉ€เจ‚ เจฎเฉเฉฑเจฒเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจธเจพเจฐเจฃเฉ€ เจตเจพเจชเจธ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚:

เจฌเฉ‡เจจเจคเฉ€ เจจเฉฐเจฌเจฐ 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 เจ•เฉ‹เจฐ 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 เจฆเฉเจ†เจฐเจพ LINQ เจ‡เฉฑเจ• เจธเจฎเฉฑเจธเจฟเจ† เจนเฉˆ เจœเจฟเจธเจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ‡เจธ เจ•เฉฐเจฎ เจตเจฟเจš เจงเจฟเจ†เจจ เจ…เจคเฉ‡ เจ‡เจ•เจธเจพเจฐเจคเจพ เจฌเจนเฉเจค เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆเฅค

เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉ‡ เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš:

  1. เจ‰เจธ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ เจœเจฟเจธ เจจเจพเจฒ เจฌเฉ‡เจจเจคเฉ€ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ€ เจนเฉˆ (เจฎเฉเฉฑเจฒ, เจšเฉเจฃเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจกเฉ‡เจŸเจพ เจ•เจฟเจธเจฎเจพเจ‚)
  2. เจ‡เจธ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจธเจนเฉ€ เจ‡เฉฐเจกเฉˆเจ•เจธเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเฉ‹
  3. เจŸเฉ‡เจฌเจฒ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจธเจผเจพเจฎเจฒ เจนเฉ‹เจฃ เจฆเฉ€เจ†เจ‚ เจธเจฅเจฟเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจธเจผเฉเฉฑเจงเจคเจพ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเฉ‹

เจ…เจ—เจฒเจพ เจ“เจชเจŸเฉ€เจฎเจพเจˆเจœเฉ‡เจธเจผเจจ เจฆเฉเจนเจฐเจพเจ“ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ:

  1. เจฌเฉ‡เจจเจคเฉ€ เจฆเจพ เจ…เจงเจพเจฐ เจนเฉˆ เจ…เจคเฉ‡ เจฎเฉเฉฑเจ– เจฌเฉ‡เจจเจคเฉ€ เจซเจฟเจฒเจŸเจฐ เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆ
  2. เจธเจฎเจพเจจ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฌเจฒเจพเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉเจนเจฐเจพเจ‰เจฃเจพ เจ…เจคเฉ‡ เจธเจฅเจฟเจคเฉ€เจ†เจ‚ เจฆเฉ‡ เจ‡เฉฐเจŸเจฐเจธเฉˆเจ•เจธเจผเจจ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจเจพ
  3. เจฒเจˆ SSMS เจœเจพเจ‚ เจนเฉ‹เจฐ GUI เจตเจฟเฉฑเจš SQL เจธเจฐเจตเจฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ SQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› (เจ‡เฉฑเจ• เจตเจฟเจšเจ•เจพเจฐเจฒเฉ‡ เจกเฉ‡เจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจเจพ, เจ‡เจธ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฌเจฃเจพเจ‰เจฃเจพ (เจ‡เฉฑเจฅเฉ‡ เจ•เจˆ เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจ))
  4. เจ†เจ–เจฐเฉ€ เจชเฉœเจพเจ… 'เจคเฉ‡, เจจเจคเฉ€เจœเฉ‡ เจจเฉ‚เฉฐ เจ…เจงเจพเจฐ เจตเจœเฉ‹เจ‚ เจฒเฉˆเจ‚เจฆเฉ‡ เจนเฉ‹เจ SQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ›, เจขเจพเจ‚เจšเฉ‡ เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจฌเจฃเจพเจ‡เจ† เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆ LINQ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ›

เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ LINQ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจชเจ›เจพเจฃเฉ‡ เจ—เจ เจ…เจจเฉเจ•เฉ‚เจฒ เจฆเฉ‡ เจขเจพเจ‚เจšเฉ‡ เจตเจฟเฉฑเจš เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเฉ‡ เจฌเจฃเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ SQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฌเจฟเฉฐเจฆเฉ‚ 3 เจคเฉ‹เจ‚.

เจชเฉเจฐเจตเจพเจจเจ—เฉ€

เจธเจพเจฅเฉ€เจ†เจ‚ เจฆเจพ เจฌเจนเฉเจค เจฌเจนเฉเจค เจงเฉฐเจจเจตเจพเจฆ jobgemws ะธ alex_ozr เจ•เฉฐเจชเจจเฉ€ เจคเฉ‹เจ‚ เจซเฉ‹เจฐเจŸเจฟเจธ เจ‡เจธ เจธเจฎเฉฑเจ—เจฐเฉ€ เจจเฉ‚เฉฐ เจคเจฟเจ†เจฐ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจธเจนเจพเจ‡เจคเจพ เจฒเจˆเฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹