เบเบฒเบเบเปเบฒเบชเบฐเปเบซเบเบต
ะ
เปเบเบเบตเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเปเบฒเบชเบฐเปเบซเบเบตเบเบฒเบเบงเบดเบเบตเบเบฒเบเปเบเบตเปเบกเปเบเบตเบกเบเปเปเบเบฑเบเบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเบฅเบฐเบซเบฑเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบ เบชเบญเบเบเบฒเบก LINQ.
เบกเบฑเบเปเบเบฑเบเบเบตเปเบฎเบนเปเบเบฑเบเบงเปเบฒ LINQ(Language-Integrated Query) เปเบเบฑเบเบเบฒเบชเบฒเบเบตเปเบเปเบฒเบเบเบฒเบ เปเบฅเบฐเบชเบฐเบเบงเบเปเบเบเบฒเบเบชเบญเบเบเบฒเบกเปเบซเบผเปเบเบเปเปเบกเบนเบ.
ะ LINQ เบเบฑเบ SQL เปเบเบฑเบเปเบเบเปเบเปเบฅเบเบตเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเปเปเบกเบนเบเปเบ DBMS. เบเบตเปโเปเบกเปเบโเปเบเบฑเบโเปเบเบทเปเบญเบโเบกเบทโเบเบตเปโเบกเบตโเบญเปเบฒโเบเบฒเบโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเปเบฎเบฑเบโเบงเบฝเบโเบเบฑเบโเบเปเปโเบกเบนเบโ, เบเปเบญเบโเบเบตเปโเบเบฒเบโเบชเบญเบโเบเบฒเบกโเปเบเปโเบเบทเบโเบชเปเบฒเบโเบเบถเปเบโเปเบเบโเบเปเบฒเบโเบเบฒโเบชเบฒโเบเบฐโเบเบฒเบโ, เบเบถเปเบโเบซเบผเบฑเบโเบเบฒเบโเบเบฑเปเบโเบเบฐโเปเบเปโเบฎเบฑเบโเบเบฒเบโเบเปเบฝเบโเปเบเบฑเบโ. SQL เบชเบญเบเบเบฒเบก เปเบงเบเบตเปเบฅเบฐเบเบทเบเบชเบปเปเบเปเบเบซเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบเบเบฒเบเบเปเปเบกเบนเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ. เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เปเบเบ DBMS เบเบงเบเปเบฎเบปเบฒเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒ MS SQL Server.
เปเบเบดเบเบขเปเบฒเบเปเบเบเปเปเบเบฒเบก, เบชเบญเบเบเบฒเบก LINQ เบเปเปเปเบเปเบเปเบฝเบเปเบเบฑเบเบฅเบฒเบเบฅเบฑเบเบญเบฑเบเบชเบญเบเบเบตเปเบเบตเบเบตเปเบชเบธเบ SQL เบชเบญเบเบเบฒเบก, เปเบเบดเปเบ DBA เบเบตเปเบกเบตเบเบฐเบชเบปเบเบเบฒเบเบชเบฒเบกเบฒเบเบเบฝเบเบเปเบงเบ nuances เบเบฑเบเบซเบกเบปเบเบเบญเบเบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบ SQL เบชเบญเบเบเบฒเบก:
- เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบตเปเบเบตเบเบตเปเบชเบธเบ (เปเบเบปเปเบฒเบฎเปเบงเบก) เปเบฅเบฐโเบเบฒเบโเบเบฑเปเบโเบเบญเบโเบเบปเบโเปเบเปโเบฎเบฑเบ (เบเปเบญเบเบเบตเป)
- nuances เบซเบผเบฒเบเปเบเบเบฒเบเบเปเบฒเปเบเปเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบฅเบฐเปเบเบทเปเบญเบเปเบเบเบญเบเบเบธเปเบก
- เบเบฒเบเบเปเบฝเบเปเบเบเบซเบผเบฒเบเบขเปเบฒเบเปเบเบเบฒเบเบเปเบฝเบเปเบเบทเปเบญเบเปเบ IN เบชเบธเบ เบกเบตเบขเบนเปะธ เบเปเปเบขเบนเปเปเบ, <> เบชเบธเบ เบกเบตเบขเบนเป
- caching เบฅเบฐเบเบฑเบเบเบฒเบเบเบฒเบเบเบญเบเบเบปเบเปเบเปเบฎเบฑเบเปเบเบเบเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบงเบเบฒเบง, CTE, เบเบปเบงเปเบเบเบฒเบเบฐเบฅเบฒเบ
- เบเบฒเบโเบเปเบฒโเปเบเปโเบเบฐโเปเบซเบเบ (เบเบฒเบเปเบฅเบทเบญเบ) เบกเบตเบเปเบฒเปเบเบฐเบเปเบฒเปเบฅเบฐเบเปเบฒเปเบเบฐเบเปเบฒเบเบฒเบเบฐเบฅเบฒเบ เบเบฑเบ ()
- เบเบฒเบโเบเปเบฒโเปเบเปโเบเบฒเบโเปเบเบดเปเบโเบเบฑเบโเบเบฐโเบเบตโเปเบเบฑเบโเบซเบเบถเปเบโเปเบโเบงเบดโเบเบตโเบเบฒเบโเบเบตเปโเบเบฐโเบเปเบฒโเบเบฑเบโเบเบฒเบโเบญเปเบฒเบโเบเปเปโเบกเบนเบโเบเบตเปโเบเปเปเบฒโเบเปเบญเบโเปเบโเบฅเบฐโเบซเบงเปเบฒเบโเบเบฒเบโเปเบฅเบทเบญเบโ
เบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบปเปเบเบเปเบเบญเบเบเบฒเบเบเบฑเบเบเบงเบฒเบเบเบปเบเปเบเปเบฎเบฑเบ SQL เบชเบญเบเบเบฒเบก เปเบกเบทเปเบญเบฅเบงเบเบฅเบงเบก เบชเบญเบเบเบฒเบก LINQ เปเบกเปเบ:
- เบเบฒเบเบฅเบงเบเบฅเบงเบกเบเบปเบเปเบเบเบฒเบเบเบฑเบเปเบฅเบทเบญเบเบเปเปเบกเบนเบเบเบฑเบเบซเบกเบปเบเปเบเบซเบเบถเปเบเบเปเบฒเบฎเปเบญเบเบเป
- duplicating blocks เบเบฝเบงเบเบฑเบเบเบญเบเบฅเบฐเบซเบฑเบ, เบเบถเปเบเปเบเบเบตเปเบชเบธเบเบเปเบฒเปเบเบชเบนเปเบเบฒเบเบญเปเบฒเบเบเปเปเบกเบนเบเบเบตเปเบเปเปเบเปเบฒเปเบเบฑเบเบซเบผเบฒเบ
- เบเบธเปเบกเบเบญเบเปเบเบทเปเบญเบเปเบเบซเบผเบฒเบเบญเบปเบเบเบฐเบเบญเบ (เปเบซเบเบเบปเบ "เปเบฅเบฐ" เปเบฅเบฐ "เบซเบผเบท") - เปเบฅเบฐ ะธ OR, เบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเปเบเบปเปเบฒเปเบเปเบเปเบเบทเปเบญเบเปเบเบเบตเปเบชเบฑเบเบชเบปเบ, เบเปเบฒเปเบเบชเบนเปเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒ optimizer, เบกเบตเบเบฑเบเบเบฐเบเบตเบเบตเปเบเปเปเปเบกเปเบเบเบธเปเบกเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบเบเบปเบเปเบเบเบเบตเปเบเปเบฒเปเบเบฑเบ, เปเบเบเบตเปเบชเบธเบเบเปเปเบเบฐเปเบฅเบตเปเบกเบชเบฐเปเบเบเบเบฑเบเบเบฑเบเบเบฐเบเบต clustered (INDEX เบชเบฐเปเบเบ) เปเบเบโเบเบธเปเบกโเบเบญเบโเปเบเบทเปเบญเบโเปเบโ
- เบเบฒเบเบชเปเบฒเบเบฎเบฑเบเปเบฅเบดเบเบเบญเบ subqueries เปเบฎเบฑเบเปเบซเป parsing เบกเบตเบเบฑเบเบซเบฒเบซเบผเบฒเบ เบเบณเบเบฐเปเบซเบผเบ SQL เปเบฅเบฐเบเบฒเบเบงเบดเปเบเบฒเบฐเปเบเบเบเบฒเบเบชเบญเบเบเบฒเบกเปเบเบชเปเบงเบเบเบญเบเบเบฑเบเบเบฑเบเบเบฐเบเบฒเปเบฅเบฐ DBA
เบงเบดเบเบตเบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบ
เบเบญเบเบเบตเปเปเบซเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเปเบเบเบเบปเบเปเบเบซเบฒเบงเบดเบเบตเบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบ.
1) เบเบฒเบเบชเปเบฒเบเบเบฑเบเบชเบฐเบเบตเปเบเบตเปเบกเปเบเบตเบก
เบกเบฑเบเปเบเบฑเบเบชเบดเปเบเบเบตเปเบเบตเบเบตเปเบชเบธเบเบเบตเปเบเบฐเบเบดเบเบฒเบฅเบฐเบเบฒเบเบปเบงเบเบญเบเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบเบฑเบเปเบฅเบทเบญเบเบเบปเปเบเบเป, เปเบเบฒเบฐเบงเปเบฒเปเบฅเบทเปเบญเบเปเบเบฒเบเบชเบญเบเบเบฒเบกเบเบฑเบเบซเบกเบปเบเปเบกเปเบเบชเปเบฒเบเบเบถเปเบเบเบฐเบกเบฒเบเบซเบเบถเปเบเบซเบผเบทเบชเบญเบเบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบเบเป (เบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ - เบเบฐเบเบฒเบเบปเบ - เบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบ) เปเบฅเบฐเบกเบตเปเบเบทเปเบญเบเปเบเบกเบฒเบเบเบฐเบเบฒเบ (IsClosed, Canceled, Enabled, Status). เบกเบฑเบเปเบเบฑเบเบชเบดเปเบเบชเปเบฒเบเบฑเบเบเบตเปเบเบฐเบชเปเบฒเบเบเบปเบงเบเบตเปเบงเบฑเบเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบเบเบตเปเปเบเปเบเปเบฒเบเบปเบ.
เบเบฒเบเปเบเปเปเบเบเบตเปเปเบฎเบฑเบเปเบซเปเบเบงเบฒเบกเบฎเบนเปเบชเบถเบเปเบเปเบงเบฅเบฒเบเบตเปเปเบฅเบทเบญเบเบเปเบญเบเบเปเปเบกเบนเบเปเบซเบผเบปเปเบฒเบเบตเปเบเปเบฒเบเบฑเบเบขเปเบฒเบเปเบซเบเปเบซเบผเบงเบเบเปเปเบเบธเบเบเบตเปเบชเบปเปเบเบเบฑเบเปเบเบซเบฒเบเปเบฒเบเบฒเบก.
เบเบปเบงเบขเปเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบกเบต 500000 เบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบกเบตเบเบฝเบเปเบเป 2000 เบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบตเปเบกเบตเบเบฒเบเปเบเบทเปเบญเบเปเบซเบง. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบฑเบเบเบฐเบเบตเบเบตเปเปเบฅเบทเบญเบเบขเปเบฒเบเบเบทเบเบเปเบญเบเบเบฐเบเปเบงเบเบเบฐเบขเบฑเบเบเบงเบเปเบฎเบปเบฒเบเบฒเบ INDEX เบชเบฐเปเบเบ เปเบเบเบฒเบเบฐเบฅเบฒเบเบเบฐเบซเบเบฒเบเปเบซเบเปเปเบฅเบฐเบเบฐเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฅเบทเบญเบเบเปเปเบกเบนเบเปเบเปเปเบงเปเบเบเบเปเบฒเบเบเบฑเบเบชเบฐเบเบตเบเบตเปเบเปเปเปเบกเปเบเบเบธเปเบก.
เบเบญเบเบเบฒเบเบเบตเป, เบเบฒเบเบเบฒเบเบเบฑเบเบชเบฐเบเบตเบชเบฒเบกเบฒเบเบเบทเบเบฅเบฐเบเบธเปเบเปเปเบเบเบเปเบฒเบเบเบฒเบเปเบเบทเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบงเบดเปเบเบฒเบฐเปเบเบเบเบฒเบเบชเบญเบเบเบฒเบกเบซเบผเบทเปเบเบฑเบเบเปเบฒเบชเบฐเบเบดเบเบดเบเบฒเบเปเบเบดเปเบเบฅเบฐเบเบปเบ. MS SQL Server:
เบเปเปเบกเบนเบเบเบฒเบเปเบเบดเปเบเบเบฑเบเปเบปเบเบกเบตเบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบเบเบฑเบเบเบฐเบเบตเบเบตเปเบเบฒเบเบซเบฒเบเปเบ, เบเบปเบเปเบงเบฑเปเบเบเบฑเบเบเบฐเบเบตเบเบฒเบเบเบงเปเบฒเบเบเบญเบเบเบทเปเบ.
เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบฑเบเบชเบฐเบเบตเปเบฅเบฐเบเบฒเบเบเบงเบฒเบกเบเปเบฒเบกเบฑเบเบเบฐเปเบเบฑเบเบงเบดเบเบตเบเบฒเบเบเปเปเบชเบนเปเบเบฑเบเบเบปเบเบชเบฐเบเปเบญเบเบเบญเบเบเบฒเบเบเบฝเบเบเบตเปเบเปเปเบเบต เบชเบญเบเบเบฒเบก LINQ ะธ SQL เบชเบญเบเบเบฒเบก.
เปเบเบเบฒเบเบฐเปเบเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเบฎเบธเบเปเบฎเบเบเบญเบเบเบตเบงเบดเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบ, เบกเบฑเบเบกเบฑเบเบเบฐเบชเปเบฒเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบธเบฅเบฐเบเบดเบเบเบตเปเบเบฐเบเบฐเบเบดเบเบฑเบเบฅเบฑเบเบชเบฐเบเบฐเบเบญเบเบเบธเบฅเบฐเบเบดเบเปเบเบเบเปเบฒเบเบปเบเปเบงเบฅเบฒเบเบตเปเปเบเปเบเบญเบ. เปเบฅเบฐเบเบฑเปเบเบเบฑเปเบ, เบเบฒเบเบฎเปเบญเบเบเปเบขเปเบฒเบเบซเบเบฑเบเปเบกเปเบเบกเบฑเบเบเบฐเบเบทเบเปเบญเบเปเบเบซเบฒเบเบทเปเบเบซเบฅเบฑเบเบเปเบงเบเบเบฒเบเบเบงเบฒเบกเบเปเบฒ.
เบเบตเปเปเบกเปเบเปเบซเบเบเบปเบเบเบฒเบเบชเปเบงเบ, เปเบเบฒเบฐเบงเปเบฒเบเบนเปเปเบเปเบเปเปเบเปเบญเบเบเบฒเบเบเปเปเบกเบนเบเบฅเปเบฒเบชเบธเบเบชเบฐเปเบซเบกเบตเปเบฅเบฐเบกเบตเบฅเบฐเบเบฑเบเบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบเบเบญเบเบเบฒเบเปเบเปเบเบญเบเบเบนเปเปเบเปเบเบตเปเบเบญเบกเบฎเบฑเบเปเบเป.
เบงเบดเบเบตเบเบฒเบเบเบตเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเปเบเปเปเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเบญเบเบเบธเบฅเบฐเบเบดเบ, เปเบเปเปเบเบเบตเปเบชเบธเบเบเปเปเบซเบผเบธเบเบเปเบญเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบญเบเบฅเบฐเบเบปเบเบเปเปเบกเบนเบเปเบเบเบเบฒเบเบเบฑเบเบเปเบฒเบเบฒเบเปเบเปเปเบเบเบฑเบเบซเบฒ.
เบกเบฑเบเบเบฑเบเปเบเบฑเบเบกเบนเบเบเปเบฒเบเบฒเบเบเบทเปเบเปเบฒเบงเปเบฒเปเบเบเบฐเบเบงเบเบเบฒเบเบเบปเปเบเบซเบฒเบเบฑเบเบชเบฐเบเบตเบเบตเปเบเปเบฒเปเบเบฑเบเปเบเบทเปเบญเปเบเบตเปเบก, เบเปเบฒเปเบเบฐเบเปเบฒ MS SQL เบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเบญเบฒเบเบเบฐเบเปเปเบเบทเบเบเปเบญเบ, เบฅเบงเบกเบเบฑเบเบเบฒเบเปเบเปเปเบเบทเปเบญเบเปเบเบเปเปเปเบเบเบตเป:
- เบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบกเบตโเบเบฑเบโเบเบฐโเบเบตโเบเบตเปโเบกเบตโเบเปเบฒโเบเบปเบโเปเบงเปโเบเปเบฒเบโเบเบทโเบเบฑเบโเบเบญเบโเบเบฒเบโเบชเบฐโเบซเบเบฒเบกโ
- เบเปเบฒเบเปเบญเบเบเปเปเบกเบนเบเปเบเบเบฒเบเบฐเบฅเบฒเบเบเปเปเบชเบฒเบกเบฒเบเบเบทเบเบเบฑเบเบชเบฐเบเบตเปเบเปเปเบเบทเปเบญเบเบเบฒเบเบเปเปเบเปเบฒเบเบฑเบเบเบฒเบเบเบฑเบเบชเบฐเบเบต (เบญเบฐเบเบดเบเบฒเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบก
เบเบตเปเบเบตเป ).
2โ) เบเบฒเบโเบฅเบงเบกโเบเบธเบโเบฅเบฑเบโเบชเบฐโเบเบฐโเปเบเบฑเบโเบเบธเบโเบฅเบฑเบโเบชเบฐโเบเบฐโเปเบซเบกเปโเบซเบเบถเปเบโ
เบเบฒเบเบเบฑเปเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบเบเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบซเบเบถเปเบ, เปเบเบดเปเบเปเบฎเบฑเบเบซเบเปเบฒเบเบตเปเปเบเบฑเบเบเบทเปเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบธเปเบกเบเบญเบเปเบเบทเปเบญเบเปเบ, เบชเบฒเบกเบฒเบเบเบทเบเปเบเบเบเบตเปเปเบเบเบเบฒเบเปเบเบฐเบเปเบฒเบเบฒเบเบชเบฐเบซเบเบฒเบกเปเบซเบกเป.
เบเบตเปเปเบกเปเบเบเบงเบฒเบกเบเบดเบเปเบเบเบชเบฐเปเบเบฒเบฐเบชเปเบฒเบฅเบฑเบเบเปเบญเบเบเปเปเบกเบนเบเบชเบฐเบเบฒเบเบฐเบเบฒเบ, เปเบเบดเปเบเบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบเบฐเปเบเบฑเบเบเบดเบเบซเบผเบทเบเปเบฒเบเบงเบเปเบเบฑเบกเปเบเบเบฐเปเบเบ.
เบเบปเบงเบขเปเบฒเบ:
IsClosed = 0 AND Canceled = 0 AND Enabled = 0 เบเบทเบเปเบเบเบเบตเปเบเปเบงเบ เบชเบฐเบเบฒเบเบฐ = 1.
เบเบตเปเปเบกเปเบเบเปเบญเบเบเบตเปเบเบธเบเบฅเบฑเบเบชเบฐเบเบฐเบชเบฐเบเบฒเบเบฐเบเบฒเบ integer เบเบทเบเบเปเบฒเบชเบฐเปเบซเบเบตเปเบเบทเปเบญเบฎเบฑเบเบเบฐเบเบฑเบเบงเปเบฒเบชเบฐเบเบฒเบเบฐเบเบฒเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบเบกเบตเบขเบนเปเปเบเบเบฒเบเบฐเบฅเบฒเบ. เบเปเปเปเบ, เบเบธเบเบฅเบฑเบเบชเบฐเบเบฐเปเบซเบกเปเบเบตเปเบเบทเบเบเบฑเบเบชเบฐเบเบต.
เบเบตเปโเปเบกเปเบโเบเบฒเบโเปเบเปโเปเบโเบเบทเปเบโเบเบฒเบโเบเบญเบโเบเบฑเบโเบซเบฒโเบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโ, เปเบเบฒเบฐโเบงเปเบฒโเบเบงเบโเปเบฎเบปเบฒโเปเบเบปเปเบฒโเปเบเบดเบโเบเปเปโเบกเบนเบโเปเบเบโเบเปเปโเบกเบตโเบเบฒเบโเบเบดเบโเปเบฅเปโเบเบตเปโเบเปเปโเบเปเบฒโเปเบเบฑเบโ.
3) เบงเบฑเบเบชเบฐเบเบธเบเบญเบเบเบฑเบเบชเบฐเบเบฐ
เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ, เปเบ เบชเบญเบเบเบฒเบก LINQ เบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบงเบเบฒเบง, CTEs, เปเบฅเบฐเบเบปเบงเปเบเบเบฒเบเบฐเบฅเบฒเบเบเปเปเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเปเบเบเบเบปเบ.
เบขเปเบฒเบเปเบเบเปเปเบเบฒเบก, เบกเบตเบงเบดเบเบตเบญเบทเปเบเบเบตเปเบเบฐเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเปเบฅเบฐเบเบตเบเบตเป - indexed views .
เบเบธเปเบกเปเบเบทเปเบญเบเปเบ (เบเบฒเบเบเบปเบงเบขเปเบฒเบเบเปเบฒเบเปเบเบดเบ) IsClosed = 0 AND Canceled = 0 AND Enabled = 0 (เบซเบผเบทเบเบธเบเบเบญเบเปเบเบทเปเบญเบเปเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเบญเบทเปเบเป) เบเบฒเบเปเบเบฑเบเบเบฒเบเปเบฅเบทเบญเบเบเบตเปเบเบตเบเบตเปเบเบฐเปเบเปเบเบงเบเบกเบฑเบเปเบเบกเบธเบกเปเบเบดเปเบเบเบตเปเบเบทเบเบเบฑเบเบชเบฐเบเบต, เบเบฑเบเปเบเบฑเบเบเปเปเบกเบนเบเบเปเบญเบเปเบเบฒเบเบเบธเบเปเบซเบเป.
เปเบเปเบกเบตเบเปเป เบเบณ เบเบฑเบ เบเบณ เบเบงเบ เปเบถเปเบ เปเบเปเบงเบฅเบฒเบชเปเบฒเบเบเบฑเบเบชเบฐเบเบฐ:
- เบเบฒเบโเบเปเบฒโเปเบเปโเบเบญเบ subqueriesโ, เบเปเปโ เบกเบตเบขเบนเป เบเบงเบเบเบทเบเบเบปเบเปเบเบเปเบเบเบเบฒเบเบเปเบฒเปเบเป เปเบเบปเปเบฒเบฎเปเบงเบก
- เบเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเปเบเปเบเบฐเปเบซเบเบ UNION, เบชเบฐเบซเบฐเบเบฑเบเบเบฑเบ เปเบปเบ, เบเปเปโเบเบปเบโเปเบงเบฑเปเบ, เบเบฑเบเบเบฑเบ
- เบเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเปเบเปเบเปเบฒเปเบเบฐเบเปเบฒเบเบฒเบเบฐเบฅเบฒเบเปเบฅเบฐเบเปเป เบเบฒเบเปเบฅเบทเบญเบ
- เบเปเปเบกเบตเบเบงเบฒเบกเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบงเบปเบเบเบญเบ
- เบกเบฑเบเปเบเบฑเบเปเบเบเปเปเปเบเปเบเบตเปเบเบฐเบชเบฐเปเบเบเบเปเปเบกเบนเบเปเบเบกเบธเบกเปเบเบดเปเบเบเบฝเบงเบเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ
เบกเบฑเบเปเบเบฑเบเบชเบดเปเบเบชเปเบฒเบเบฑเบเบเบตเปเบเบฐเบเบทเปเบเปเบฒเบงเปเบฒเบเบปเบเบเบฐเปเบซเบเบเบเบตเปเปเบเปเบเบดเบเบเบญเบเบเบฒเบเบเปเบฒเปเบเปเบกเบธเบกเปเบเบดเปเบเบเบฑเบเบชเบฐเบเบตเบชเบฒเบกเบฒเบเบเบฑเบเบฅเบธเปเบเปเปเบเบเบเบฒเบเบเบฑเบเบชเบฐเบเบตเบเบปเบงเบเบดเบเปเบเบปเปเบฒเบเบฑเปเบ.
เปเบเปเปเบกเบทเปเบญเปเบเบซเบฒเบกเบธเบกเปเบเบดเปเบ, เบเบฑเบเบเบฐเบเบตเปเบซเบผเบปเปเบฒเบเบตเปเบญเบฒเบเบเบฐเบเปเปเบเบทเบเบเปเบฒเปเบเป, เปเบฅเบฐเปเบเบทเปเบญเบเปเบฒเปเบเปเบเบงเบเบกเบฑเบเบขเปเบฒเบเบเบฐเปเบเปเบ, เบเปเบฒเบเบเปเบญเบเบฅเบฐเบเบธ. เบเบฑเบ(เบเปเปเบเบฐเบซเบเบฒเบ).
เบเบฑเปเบเปเบเปเบขเบนเปเปเบ เบชเบญเบเบเบฒเบก LINQ เบกเบฑเบเปเบเบฑเบเปเบเบเปเปเปเบเปเบเบตเปเบเบฐเบเปเบฒเบเบปเบเบเปเบฒเปเบเบฐเบเปเบฒเปเบเบเบฒเบเบฐเบฅเบฒเบ, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบเปเบญเบเบชเปเบฒเบเบเบปเบงเปเบเบเบญเบทเปเบ - "wrapper" เบเบญเบเปเบเบเบเบญเบกเบเปเปเปเบเบเบตเป:
CREATE VIEW ะะะฏ_ะฟัะตะดััะฐะฒะปะตะฝะธั AS SELECT * FROM MAT_VIEW WITH (NOEXPAND);
4) เบเบฒเบเบเปเบฒเปเบเปเบซเบเปเบฒเบเบตเปเบเบฒเบเบฐเบฅเบฒเบ
เบกเบฑเบเบขเบนเปเปเบ เบชเบญเบเบเบฒเบก LINQ เบเบฑเบเบเบฐเบซเบเบฒเบเปเบซเบเปเบเบญเบ subqueries เบซเบผเบทเบเบฑเบเบเบฒเบเบเปเบฒเปเบเป views เบเบตเปเบกเบตเปเบเบเบชเปเบฒเบเบชเบฐเบฅเบฑเบเบชเบฑเบเบเปเบญเบเบเบฐเบเบญเบเปเบเบฑเบเบเปเบฒเบเบฒเบกเบชเบธเบเบเปเบฒเบเบเบตเปเบกเบตเปเบเบเบชเปเบฒเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเบชเบฐเบฅเบฑเบเบชเบฑเบเบเปเบญเบเบซเบผเบฒเบเปเบฅเบฐ suboptimal.
เบเบปเบเบเบฐเปเบซเบเบเบเบตเปเบชเปเบฒเบเบฑเบเบเบญเบเบเบฒเบเบเปเบฒเปเบเปเบซเบเปเบฒเบเบตเปเบเบฒเบเบฐเบฅเบฒเบเปเบ เบชเบญเบเบเบฒเบก LINQ:
- เบเบงเบฒเบกเบชเบฒเบกเบฒเบ, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเปเบฅเบฐเบเบตเบเบญเบ views, เบเบทเบเบเปเบฒเปเบเปเปเบฅเบฐเบเปเบฒเบเบปเบเปเบเบฑเบเบงเบฑเบเบเบธ, เปเบเปเบงเปเบฒเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบเบธเบเบเบญเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบ:
เบเบฒเบ FUNCTION(@param1, @param2 ...)
เบเบฑเปเบเบเบฑเปเบ, เบเบฒเบเปเบเบฑเบเบเบปเบงเบขเปเบฒเบเบเปเปเบกเบนเบเบเบตเปเบกเบตเบเบงเบฒเบกเบเบทเบเบซเบเบธเปเบเบชเบฒเบกเบฒเบเบเบฑเบเบฅเบธเปเบเป - เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบฒเบเบเปเบฒเปเบเปเบซเบเปเบฒเบเบตเปเบเบฒเบเบฐเบฅเบฒเบ, เบเปเปเบกเบตเบเปเปเบเปเบฒเบเบฑเบเบเบตเปเปเบเบฑเปเบกเปเบเบเปเบเบฑเปเบเปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบฒเบเปเบเบดเปเบเบเบฑเบเบชเบฐเบเบตเปเบเปเบญเบฐเบเบดเบเบฒเบเบเปเบฒเบเปเบเบดเบ:
- เบเปเบฒเปเบเบฐเบเปเบฒเบเบฒเบเบฐเบฅเบฒเบ:
เปเบเบเบเปเบฒเบเบเบฒเบ LINQ เบเปเบฒเบโเบเปเปโเบชเบฒโเบกเบฒเบโเบฅเบฐโเบเบธโเบงเปเบฒโเบเบฑเบโเบเบฐโเบเบตโเปเบโเบเบงเบโเบเบฐโเบเบทเบโเบเปเบฒโเปเบเปโเปเบฅเบฐโเบเปเบฒโเบเบปเบโเบฅเบฐโเบเบฑเบโเบเบฒเบโเปเบเบโเบเปเปโเบกเบนเบโเปเบโเปเบงโเบฅเบฒโเบเบตเปโเบเบฒเบโเบชเบญเบโเบเบฒเบกโ.
เปเบเปเบซเบเปเบฒเบเบตเปเบกเบตเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบซเบผเบปเปเบฒเบเบตเป.
เบเปเบงเบเบเบฑเบเบเบฑเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเบเบฅเบธเปเบเบเบเบฒเบเบชเบญเบเบเบฒเบกเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบปเบเบเบตเป, เบเปเบญเบเบเบตเปเบเบปเบเบฅเบฐเบเบฝเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบฑเบเบชเบฐเบเบตเปเบฅเบฐเบฅเบฐเบเบฑเบเบเบฒเบเปเบเบเบเปเปเบกเบนเบเบเบทเบเบเปเบฒเบเบปเบ. - เบเบฒเบเบเปเบฒเปเบเปเบซเบเปเบฒเบเบตเปเบญเบฐเบเบธเบเบฒเบเปเบซเป, เปเบเบเบฒเบเบเบฝเบเบเบฝเบเบเบฑเบเบกเบธเบกเปเบเบดเปเบเบเบฑเบเบชเบฐเบเบต, เปเบเบทเปเบญเปเบซเปเปเบเปเบฎเบฑเบ:
- เปเบซเบเบเบปเบเบเบฒเบเปเบเบฑเบเบเบปเบงเบขเปเบฒเบเบเปเปเบกเบนเบเบเบตเปเบเบฑเบเบเปเบญเบ (เปเบกเปเปเบเปเปเบเป loops)
- เบเบถเบเบเปเปเบกเบนเบเบเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบซเบผเบฒเบ
- เบเบฒเบเบเปเบฒเปเบเปเบเบญเบ UNION ะธ เบกเบตเบขเบนเป
- เบเปเบฒเปเบเบฐเบเปเบฒเบเบฒเบเบฐเบฅเบฒเบ:
- เบเปเปเบชเบฐ เปเปเบต เบเบฒเบเปเบฅเบทเบญเบ เบกเบตเบเบฐเปเบซเบเบเบซเบผเบฒเบเปเบกเบทเปเบญเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเปเบซเปเบเบฒเบเบเบงเบเบเบธเบกเบเบงเบฒเบกเบชเบญเบเบเปเบญเบเบเบฑเบ OPTION(MAXDOP N), เบเปเบฒเบชเบฑเปเบเบเบญเบเปเบเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบชเบญเบเบเบฒเบก. เบเบปเบโเบเบปเบงโเบขเปเบฒเบ:
- เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบเบเบฒเบเบเบฑเบเบเบฑเบเปเบซเปเบชเปเบฒเบเปเบเบเบเบฒเบเบชเบญเบเบเบฒเบกเบเบทเบเปเบซเบกเป เบเบปเบงเปเบฅเบทเบญเบ (เบเบทเปเบกเบเปเปเบกเบนเบ)
- เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบเบงเปเบฒเบเบฐเบเบฑเบเบเบฑเบเปเบเบเบเบฒเบเบชเบญเบเบเบฒเบกเปเบเบทเปเบญเบเปเบฒเปเบเปเบเปเบฒเบชเบฑเปเบเปเบเบปเปเบฒเบฎเปเบงเบกเบเบตเปเบฅเบฐเบเบธเปเบงเปเปเบเบเปเบฒเบเบฒเบก เบเบปเบงเปเบฅเบทเบญเบ (เบเบฑเบเบเบฑเบเปเบซเปเบชเบฑเปเบ)
เบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบกเบเปเบฝเบงเบเบฑเบ เบเบฒเบเปเบฅเบทเบญเบ เบญเบฐเบเบดเบเบฒเบ
เบเบตเปเบเบตเป . - เบเบฒเบโเบเปเบฒโเปเบเปโเบเบฐโเบซเบเบฒเบโเบเปเปโเบกเบนเบโเบเบตเปโเปเบเบโเบเบตเปโเบชเบธเบโเปเบฅเบฐโเบเปเบญเบโเบเบฒเบโเบเบตเปโเบชเบธเบโ:
เบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบธเบเบเปเปเบกเบนเบเบเบฐเบซเบเบฒเบเปเบซเบเปเปเบเบเบฒเบเบเบงเบฒเบกเบเปเบฒ (เบเบทเบเบฑเบเบเบฑเบเบเปเบฅเบฐเบเบตเบเบตเปเบกเบตเบกเบธเบกเปเบเบดเปเบเบเบฑเบเบชเบฐเบเบต), เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบเบฑเบเบเปเบญเบเบเบฒเบเบเบฑเปเบเบเบญเบเบเปเปเบกเบนเบเปเบเบเบเบฒเบฅเบฒเบกเบดเปเบเบต.
เบเบปเบงเบขเปเบฒเบ, เบกเบตเบเบฒเบเบฐเบฅเบฒเบเบเบตเปเบกเบตเบเบปเบงเบเบญเบ เบเปเบญเบเบเบตเป เบชเบฒเบกเบเบฒเบเบชเบฐเบซเบเบฒเบกเบเบทเบเบเปเบฒเปเบเป (a, b, c).เบเบฒเบกเบเปเบฒเบกเบฐเบเบฒ, เบเบฒเบเบฎเปเบญเบเบเปเบเบฑเบเบซเบกเบปเบเบกเบตเปเบเบทเปเบญเบเปเบเบเบปเบเบเบตเป a = 0 เปเบฅเบฐ b = 0.
เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบฒเบเบฎเปเบญเบเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบฐเบซเบเบฒเบก c เบเบปเบงโเบเปเบฝเบโเปเบเบโเบซเบผเบฒเบโเบเบงเปเบฒโ.
เปเบซเปเปเบเบทเปเบญเบเปเบ a = 0 เปเบฅเบฐ b = 0 เบกเบฑเบเบเปเปเบเปเบงเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบฑเบเบเบฒเบเบเปเบฒเบเบปเบเบเบปเบเปเบเปเบฎเบฑเบเบเบตเปเบเปเบฒเบเบปเบเปเบงเปเปเบเบฑเบเบเบฑเบเปเบเบฑเบเบเบถเบ, เปเบเปเปเบเบทเปเบญเบเปเบเปเบ ั เบเบณเบเบฑเบเบเบฒเบเปเบฅเบทเบญเบเบฅเบปเบเปเบเบฑเบเบฎเปเบญเบเบเบฑเบเบเบถเบ.
เบเบตเปเบเบตเปเบซเบเปเบฒเบเบตเปเบเบฒเบเบฐเบฅเบฒเบเบญเบฒเบเบเบฐเปเบเบฑเบเบเบฒเบเปเบฅเบทเบญเบเบเบตเปเบเบตเบเบงเปเบฒ.
เบเบญเบเบเบฒเบเบเบตเป, เบเบฑเบเบเบฑเบเบเบฒเบเบฐเบฅเบฒเบเปเบกเปเบเบชเบฒเบกเบฒเบเบเบฒเบเปเบเบปเบฒเปเบเปเบซเบผเบฒเบเบเบถเปเบเปเบฅเบฐเบชเบญเบเบเปเบญเบเปเบเปเบงเบฅเบฒเบเบฐเบเบดเบเบฑเบ.
เบเบปเบงเบขเปเบฒเบ
เปเบซเปเปเบเบดเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบปเบงเบขเปเบฒเบเปเบเบเปเบเปเบเบฒเบเบเปเปเบกเบนเบเบเปเบฒเบเบฒเบกเปเบเบฑเบเบเบปเบงเบขเปเบฒเบ.
เบกเบตเบเบฒเบเบฎเปเบญเบเบเป SELECT, เปเบเบดเปเบเบฅเบงเบกเบเบฒเบเบฐเบฅเบฒเบเบซเบผเบฒเบเปเบฅเบฐเบเปเบฒเปเบเปเบซเบเบถเปเบเปเบเบดเปเบ (OperativeQuestions), เปเบเบดเปเบเบเบงเบฒเบกเบเปเบฝเบงเบเปเบญเบเปเบเปเบเบทเบเบเบงเบเบชเบญเบเปเบเบเบญเบตเปเบกเบฅเป (เบเปเบฒเบ เบกเบตเบขเบนเป) เบเบฑเบ "เบเปเบฒเบเบฒเบกเบเบฐเบเบดเบเบฑเบเบเบฒเบ":
เบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบ 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])
));
เบกเบธเบกเปเบเบดเปเบเบกเบตเปเบเบเบชเปเบฒเบเบเบตเปเบชเบฑเบเบชเบปเบเบซเบผเบฒเบ: เบกเบฑเบเบกเบต subquery เปเบเบปเปเบฒเบฎเปเบงเบกเปเบฅเบฐเบเปเบฒเปเบเปเบเบฒเบเบเบฑเบเบฅเบฝเบ DISTINCT, เปเบเบดเปเบเปเบเบเบเบปเปเบงเปเบเปเบฅเปเบงเปเบกเปเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบตเปเบกเบตเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบตเปเบเปเบญเบเบเปเบฒเบ.
เบเบปเบงเบขเปเบฒเบเบเบฒเบ OperativeQuestions เปเบกเปเบเบเบฐเบกเบฒเบเบชเบดเบเบเบฑเบเบเบฑเบเบเบถเบ.
เบเบฑเบเบซเบฒเบเบปเปเบเบเปเบเบญเบเบเบฒเบเบชเบญเบเบเบฒเบกเบเบตเปเปเบกเปเบเบงเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบถเบเบเบฒเบเบเบฒเบเบชเบญเบเบเบฒเบกเบเบฒเบเบเบญเบ, เบเบฒเบเบชเบญเบเบเบฒเบกเบเปเบญเบเบเบฒเบเปเบเบเบฐเบเบทเบเบเบฐเบเบดเบเบฑเบเปเบเบกเบธเบกเปเบเบดเปเบ [OperativeQuestions], เปเบเบดเปเบเบเบงเบเบชเปเบฒเบฅเบฑเบ [Email] = @p__linq__0 เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบฑเบเบเบฒเบเปเบฅเบทเบญเบเบเบปเบเบเบฐเบฅเบดเบ (เบเปเบฒเบ เบกเบตเบขเบนเป) เปเบเบดเบเบซเบผเบฒเบเบฎเปเบญเบเบเบฑเบเบเบถเบ.
เปเบฅเบฐเบกเบฑเบเบญเบฒเบเบเบฐเปเบเบดเปเบเบเบทเบงเปเบฒ subquery เบเบงเบเบเบดเบเปเบฅเปเบเบฑเบเบเบถเบเบซเบเบถเปเบเบเบฑเปเบเปเบเบ [Email] = @p__linq__0, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบชเบญเบเบชเบฒเบกเบฎเปเบญเบเบเบฑเบเบเบถเบเปเบซเบผเบปเปเบฒเบเบตเปเบเบงเบเบเบฐเบเบทเบเปเบเบทเปเบญเบกเบเปเปเปเบเบ Id เบเบฑเบเบเปเบฒเบเบฒเบก, เปเบฅเบฐเบเบฒเบเบชเบญเบเบเบฒเบกเบเบฐเปเบง.
เปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบ, เบกเบตเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฒเบกเบฅเปเบฒเบเบฑเบเบเบญเบเบเบฒเบเบฐเบฅเบฒเบเบเบฑเบเบซเบกเบปเบ: เบเบฒเบเบเบงเบเบชเบญเบเบเบฒเบเบเบญเบเบเปเบฒเบเบฒเบกเบเบญเบ Id เบเบฑเบ Id เบเบฒเบ OperativeQuestions, เปเบฅเบฐเบเบฒเบเบเบฑเปเบเบเบญเบเปเบเบเบญเบตเปเบกเบง.
เปเบโเบเบงเบฒเบกโเปเบเบฑเบโเบเบดเบ, เบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบโเปเบฎเบฑเบโเบงเบฝเบโเบฎเปเบงเบกโเบเบฑเบโเบเบฒเบโเบเบฑเบโเบซเบกเบปเบโเบชเบดเบโเบเบฑเบโเบเบญเบโเบเบฒเบโเบเบฑเบโเบเบถเบโเบเปเบฒโเบเบฒเบก Operative, เปเบเปโเบเบฝเบโเปเบเปโเบเปเปโเบกเบนเบโเบเบตเปโเบชเบปเบโเปเบโเปเบกเปเบโเบเปเบญเบโเบเบฒเบโเบเปเบฒเบ Email.
เบเปเบฒเบเบฒเบกเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบเบดเปเบเบเปเปเบเบงเบฒเบก:
เบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบ 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 Core 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();
เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเบเบดเบเบฒเบฅเบฐเบเบฒเปเบเปเปเบเบเบฑเบเบซเบฒเบเบตเปเปเบเบเบเปเปเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบเบเบฒเบเบเปเบฒเบเปเบเบเบชเปเบฒเบ, เปเบเบเบเปเปเบกเบตเบเบฒเบเปเบเบฐเบเปเบฒเบเบฒเบเบฐเบฅเบฒเบเปเบเบเบเปเบฒเบเบซเบฒเบเบเบตเปเบกเบตเบเบปเบเปเบเปเบฎเบฑเบเบเบตเปเบเบฝเบกเบเปเบญเบก ("เบเบฒเบเบชเบญเบเบเบฒเบกเบเบตเปเบกเบตเบเบฒเบเปเบเบทเปเบญเบเปเบซเบง"), เปเบเบดเปเบเบเปเบญเบเบเบฒเบเบเบปเบเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบทเปเบกเบเปเปเบกเบนเบเปเบฅเบฐเบฎเบฑเบเบชเบฒเบกเบฑเบเปเบซเปเบเบฑเบเบชเบฐเปเบซเบก. .
เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบตเปเปเบกเปเบเบเบฒเบเปเบเปเปเบเบเบตเปเบเบต, เบกเบตเบเบฒเบเปเบฅเบทเบญเบเบญเบทเปเบเบเบตเปเบเบฐเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบฑเบเบซเบฒเบเบตเป.
เบเบธเบเบเบฐเบชเบปเบเบเบปเปเบเบเปเปเบกเปเบเปเบเบทเปเบญ cache entries เปเบเบ [Email] = @p__linq__0 เบเบฒเบ OperativeQuestions view.
เปเบเบฐเบเปเบฒเบเบฑเบเบเบฑเบเบเบฒเบเบฐเบฅเบฒเบ [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 เบเบตเบเบตเปเบชเบธเบเปเบฅเบฐเบกเบตเปเบเบเบเบฒเบเบชเบญเบเบเบฒเบกเบเบตเปเบเบตเบเบตเปเบชเบธเบ, เบเปเบญเบเบกเบตเปเบเบเบชเปเบฒเบเบเบตเปเปเบเบฑเปเบเบเบฑเบ, เปเบฅเบฐเบเปเปเปเบกเปเบ. เบเบฒเบเบฐเบฅเบฒเบเบชเบปเปเบเบเบทเบเบเบฒเบกเบเบฒเบเบชเบปเปเบเบเบทเบ...
เปเบเบเปเบฅเบฐเบเบตเบเบตเป, Query 1 เบเบตเปเบเปเบญเบเบเบฒเบเบเบฐเบเบทเบเบเปเบฝเบเปเบเบฑเบ Query 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, เปเบฅเบฐเบญเบทเปเบเป, i.e. เบซเบผเบฒเบเบชเบดเบเปเบเบทเปเบญเปเบง.
เบเปเบฒเบเบงเบเปเบฎเบปเบฒเปเบญเบปเบฒเบกเบฑเบเปเบเบเบชเบฐเปเบฅเปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบเบเบตเปเบเบฐเปเบเบฑเบ 350 ms เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบ 8 ms.
เบเบฒเบเบเปเปเปเบเปเบเบฝเบเบเบตเปเบเบฐเปเบเปเบเบเบงเบเปเบฎเบปเบฒเบเบฑเบเปเบเปเบฎเบฑเบ:
- เบเบฒเบโเบซเบผเบธเบโเบเปเบญเบโเบเบฒเบโเบญเปเบฒเบโเบซเบเบฑเบโเบชเบทโเปเบเบโเบเบปเปเบงโเปเบโ,
- เบเบฒเบเบซเบผเบธเบเบฅเบปเบเบขเปเบฒเบเบซเบผเบงเบเบซเบผเบฒเบเปเบเบเบงเบฒเบกเปเบเบฑเบเปเบเปเบเปเบเบญเบเบเบฒเบเบเบฑเบเบเบงเบฒเบ
- เบเบฒเบเบซเบผเบธเบเบเปเบญเบเปเบงเบฅเบฒเบชเบฐเบเบฑเบเบชเบฐเปเบฅเปเบเปเบเบชเบนเปเบเปเบฒเบเบตเปเบเบญเบกเบฎเบฑเบเปเบเป
เบชเบฐเบซเบฅเบธเบ
เบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเปเบฅเบฐเบเบฒเบเบเบฑเบเบฅเบฐเบญเบฝเบเบเบญเบเบเบฒเบเปเบเบเบฒเบเบเปเปเบกเบนเบ MS SQL เปเบเบเบเปเบฒเบเบเบฒเบ LINQ เปเบเบฑเบโเบเบฑเบโเบซเบฒโเบเบตเปโเบชเบฒโเบกเบฒเบโเปเบเปโเปเบโเปเบเปโ.
เบเบงเบฒเบกเปเบญเบปเบฒเปเบเปเบชเปเปเบฅเบฐเบเบงเบฒเบกเบชเบญเบเบเปเบญเบเปเบกเปเบเบกเบตเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบซเบผเบฒเบเปเบเบงเบฝเบเบเบฒเบเบเบตเป.
เปเบเบเบญเบเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบเบเบฐเบเบงเบเบเบฒเบ:
- เบกเบฑเบเปเบเบฑเบเบชเบดเปเบเบเปเบฒเปเบเบฑเบเปเบเบทเปเบญเบเบงเบเบเบฒเปเบเบดเปเบเบเปเปเบกเบนเบเบเบตเปเบฎเปเบญเบเบเปเปเบฎเบฑเบเบงเบฝเบ (เบเปเบฒ, เบเบฐเปเบเบเบเปเปเบกเบนเบเบเบตเปเปเบฅเบทเบญเบ)
- เบเปเบฒเปเบเบตเบเบเบฒเบเบเบฑเบเบชเบฐเบเบตเบเปเปเบกเบนเบเบเบตเปเบขเปเบฒเบเบเบทเบเบเปเบญเบ
- เบเบงเบเปเบเบดเปเบเบเบงเบฒเบกเบเบทเบเบเปเบญเบเบเบญเบเปเบเบทเปเบญเบเปเบเบเบฒเบเปเบเบปเปเบฒเบฎเปเบงเบกเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบ
เบเบฒเบโเบเบฑเบโเบเบธเบโเปเบเปโเปเบโเบเปเปโเปเบโเบเบตเปโเบชเบฐโเปเบเบโเปเบซเปโเปเบซเบฑเบโเบงเปเบฒโ:
- เบเบทเปเบเบเบฒเบเบเบญเบเบเปเบฒเบฎเปเบญเบเบเปเปเบฅเบฐเบเปเบฒเบเบปเบเบเบฒเบเบเบฑเปเบเบเบญเบเบเปเบฒเบฎเปเบญเบเบเปเบเบปเปเบเบเป
- เปเบฎเบฑเบเบเปเปเบฒเบเบทเบเบเบฒเบเบชเบญเบเบเบฒเบกเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเปเบฅเบฐเบเบฒเบเบงเบดเปเบเบฒเบฐเบเบธเบเบเบฑเบเบเบฑเบเบเบญเบเปเบเบทเปเบญเบเปเบ
- เปเบ SSMS เบซเบผเบท GUI เบญเบทเปเบเปเบชเปเบฒเบฅเบฑเบ SQL Server optimizes เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบ SQL เบชเบญเบเบเบฒเบก (เบเบฒเบเบเบฑเบเบชเบฑเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเปเบกเบนเบเบฅเบฐเบเบฑเบเบเบฒเบเบเบฒเบ, เบชเปเบฒเบเบเบฒเบเบชเบญเบเบเบฒเบกเบเบปเบเปเบเปเบฎเบฑเบเปเบเบเปเบเปเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบตเป (เบญเบฒเบเบกเบตเบซเบผเบฒเบ))
- เปเบเบเบฑเปเบเบเบญเบเบชเบธเบเบเปเบฒเบ, เปเบเปเปเบงเบฅเบฒเปเบเบฑเบเบเบทเปเบเบเบฒเบเบเบปเบเปเบเปเบฎเบฑเบ SQL เบชเบญเบเบเบฒเบก, เปเบเบเบชเปเบฒเบเบเปเบฒเบฅเบฑเบเบเบทเบเบชเปเบฒเบเปเบซเบกเป LINQ เบชเบญเบเบเบฒเบก
เบเบปเบเปเบเปเบฎเบฑเบ LINQ เบชเบญเบเบเบฒเบก เบเบงเบโเบเบฐโเบเบฒเบโเปเบเบฑเบโเปเบเบโเบเบฐโเบเบญเบโเบเบฒเบโเบเบตเปโเบเบตโเบเบตเปโเบชเบธเบโเบเบตเปโเบเปเบฒโเบเบปเบโเปเบงเปโ SQL เบชเบญเบเบเบฒเบก เบเบฒเบเบเบธเบ 3.
เบเบญเบเปเบ
เบเบญเบเปเบเบซเบผเบฒเบเปเบเบฑเบเปเบเบทเปเบญเบเบฎเปเบงเบกเบเบฒเบ
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com