C#.NET-āĻ LINQ āĻĒā§āĻ°āĻļā§āĻ¨āĻ—ā§āĻ˛āĻŋ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻžāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋ

āĻ­ā§‚āĻŽāĻŋāĻ•āĻž

В āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ āĻ•āĻŋāĻ›ā§ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ LINQ āĻĒā§āĻ°āĻļā§āĻ¨.
āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻ°āĻž āĻ•ā§‹āĻĄ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāĻ¤ āĻ†āĻ°āĻ“ āĻ•āĻŋāĻ›ā§ āĻĒāĻ¨ā§āĻĨāĻž āĻ‰āĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻŋ LINQ āĻĒā§āĻ°āĻļā§āĻ¨.

āĻāĻŸāĻž āĻœāĻžāĻ¨āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ˛āĻŋāĻ¨āĻ•ā§āĻ‡(Language-Integrated Query) āĻāĻ•āĻŸāĻŋ āĻ¤āĻĨā§āĻ¯ āĻ‰ā§ŽāĻ¸ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¸āĻšāĻœ āĻāĻŦāĻ‚ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻ­āĻžāĻˇāĻžāĨ¤

А SQL āĻĨā§‡āĻ•ā§‡ LINQ āĻāĻ•āĻŸāĻŋ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāĻ¸ā§‡ āĻĄā§‡āĻŸāĻž āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĨ¤ āĻāĻŸāĻŋ āĻĄā§‡āĻŸāĻž āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻļāĻ•ā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§€ āĻŸā§āĻ˛, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻ˜ā§‹āĻˇāĻŖāĻžāĻŽā§‚āĻ˛āĻ• āĻ­āĻžāĻˇāĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĒā§āĻ°āĻļā§āĻ¨āĻ—ā§āĻ˛āĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻĒāĻ°ā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻŦā§‡ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻĒā§āĻ°āĻļā§āĻ¨ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽ āĻāĻŦāĻ‚ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻĒāĻžāĻ āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, DBMS āĻĻā§āĻŦāĻžāĻ°āĻž āĻ†āĻŽāĻ°āĻž āĻŦā§‹āĻāĻžāĻ¯āĻŧ āĻāĻŽāĻāĻ¸ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°.

āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, LINQ āĻĒā§āĻ°āĻļā§āĻ¨ āĻ¸āĻ°ā§āĻŦā§‹āĻ¤ā§āĻ¤āĻŽ āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻŦā§‡āĻļā§€ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻ¨āĻž āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻĒā§āĻ°āĻļā§āĻ¨, āĻ¯āĻž āĻāĻ•āĻœāĻ¨ āĻ…āĻ­āĻŋāĻœā§āĻž DBA āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨ā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸ā§‚āĻ•ā§āĻˇā§āĻŽāĻ¤āĻž āĻ¸āĻš āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ā§ˇ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻĒā§āĻ°āĻļā§āĻ¨:

  1. āĻ¸āĻ°ā§āĻŦā§‹āĻ¤ā§āĻ¤āĻŽ āĻ¸āĻ‚āĻ¯ā§‹āĻ— (JOIN) āĻāĻŦāĻ‚ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°āĻŋāĻ‚ (āĻ•ā§‹āĻĨāĻžāĻ¯āĻŧ)
  2. āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻāĻŦāĻ‚ āĻ—ā§āĻ°ā§āĻĒ āĻļāĻ°ā§āĻ¤āĻžāĻŦāĻ˛ā§€ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§‡āĻ• āĻ¸ā§‚āĻ•ā§āĻˇā§āĻŽāĻ¤āĻž
  3. āĻļāĻ°ā§āĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ…āĻ¨ā§‡āĻ• āĻŦā§ˆāĻšāĻŋāĻ¤ā§āĻ° IN āĻ‰āĻĒāĻ° āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤Đ¸ āĻ¨āĻž, <> āĻšāĻžāĻ˛ā§ āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤
  4. āĻ…āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻŸā§‡āĻŦāĻŋāĻ˛, CTE, āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĢāĻ˛āĻžāĻĢāĻ˛ā§‡āĻ° āĻŽāĻ§ā§āĻ¯āĻŦāĻ°ā§āĻ¤ā§€ āĻ•ā§āĻ¯āĻžāĻļāĻŋāĻ‚
  5. āĻŦāĻžāĻ•ā§āĻ¯ā§‡āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° (āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€ OPTION) āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€ āĻāĻŦāĻ‚ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ‡āĻ™ā§āĻ—āĻŋāĻ¤ āĻ¸āĻš āĻ¸āĻ™ā§āĻ—ā§‡ (...)
  6. āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ…āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻĄā§‡āĻŸāĻž āĻ°āĻŋāĻĄāĻŋāĻ‚ āĻĨā§‡āĻ•ā§‡ āĻĒāĻ°āĻŋāĻ¤ā§āĻ°āĻžāĻŖ āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻ…āĻ¨ā§āĻ¯āĻ¤āĻŽ āĻ‰āĻĒāĻžāĻ¯āĻŧ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¸ā§‚āĻšā§€āĻ•ā§ƒāĻ¤ āĻ­āĻŋāĻ‰ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž

āĻĢāĻ˛ā§‡ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻŦāĻžāĻ§āĻž āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻĒā§āĻ°āĻļā§āĻ¨ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ LINQ āĻĒā§āĻ°āĻļā§āĻ¨ āĻāĻ‡āĻ—ā§āĻ˛āĻŋ āĻšāĻ˛:

  1. āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡ āĻ¸āĻŽāĻ—ā§āĻ° āĻĄā§‡āĻŸāĻž āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻāĻ•āĻ¤ā§āĻ°ā§€āĻ•āĻ°āĻŖ
  2. āĻ•ā§‹āĻĄā§‡āĻ° āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ āĻŦā§āĻ˛āĻ•ā§‡āĻ° āĻ¨āĻ•āĻ˛, āĻ¯āĻž āĻļā§‡āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻ…āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻĄā§‡āĻŸāĻž āĻĒāĻĄāĻŧāĻžāĻ° āĻĻāĻŋāĻ•ā§‡ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¯āĻŧ
  3. āĻŽāĻžāĻ˛ā§āĻŸāĻŋ-āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ° āĻ—ā§āĻ°ā§āĻĒ (āĻ¯ā§ŒāĻ•ā§āĻ¤āĻŋāĻ• "āĻāĻŦāĻ‚" āĻāĻŦāĻ‚ "āĻŦāĻž") - āĻāĻŦāĻ‚ и OR, āĻœāĻŸāĻŋāĻ˛ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻž, āĻāĻ‡ āĻ¸āĻ¤ā§āĻ¯ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻŋāĻ¤ āĻ•āĻ°ā§‡ āĻ¯ā§‡ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœāĻžāĻ°, āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ āĻ¨āĻ¨-āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ°āĻĄ āĻ¸ā§‚āĻšāĻ• āĻĨāĻžāĻ•āĻž, āĻļā§‡āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ°āĻ¯ā§āĻ•ā§āĻ¤ āĻ¸ā§‚āĻšāĻ•ā§‡āĻ° āĻŦāĻŋāĻ°ā§āĻĻā§āĻ§ā§‡ āĻ¸ā§āĻ•ā§āĻ¯āĻžāĻ¨ āĻ•āĻ°āĻž āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡ (āĻ‡āĻ¨āĻĄā§‡āĻ•ā§āĻ¸ āĻ¸ā§āĻ•ā§āĻ¯āĻžāĻ¨) āĻļāĻ°ā§āĻ¤ā§‡āĻ° āĻ—ā§āĻ°ā§āĻĒ āĻĻā§āĻŦāĻžāĻ°āĻž
  4. āĻ¸āĻžāĻŦāĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋāĻ° āĻ—āĻ­ā§€āĻ° āĻ¨ā§‡āĻ¸ā§āĻŸāĻŋāĻ‚ āĻĒāĻžāĻ°ā§āĻ¸āĻŋāĻ‚āĻ•ā§‡ āĻ–ā§āĻŦ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻŦāĻŋāĻŦā§ƒāĻ¤āĻŋ āĻāĻŦāĻ‚ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ°āĻĻā§‡āĻ° āĻĒāĻ•ā§āĻˇ āĻĨā§‡āĻ•ā§‡ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ā§‡āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻāĻŦāĻ‚ DBA

āĻ…āĻ¨ā§āĻ•ā§‚āĻ˛āĻ•āĻ°āĻŖ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ

āĻāĻ–āĻ¨ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§‡ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•āĨ¤

1) āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻ‡āĻ¨āĻĄā§‡āĻ•ā§āĻ¸āĻŋāĻ‚

āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ¸āĻžāĻ°āĻŖā§€āĻ¤ā§‡ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°āĻ—ā§āĻ˛āĻŋ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°āĻž āĻ¸āĻ°ā§āĻŦā§‹āĻ¤ā§āĻ¤āĻŽ, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ‡ āĻĒā§āĻ°ā§‹ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€āĻŸāĻŋ āĻāĻ• āĻŦāĻž āĻĻā§āĻŸāĻŋ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻŸā§‡āĻŦāĻŋāĻ˛ (āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨-āĻ˛ā§‹āĻ•-āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨) āĻāĻŦāĻ‚ āĻļāĻ°ā§āĻ¤āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻŽāĻžāĻ¨āĻ• āĻ¸ā§‡āĻŸ (IsClosed, Canceled, Enabled, Status) āĻāĻ° āĻšāĻžāĻ°āĻĒāĻžāĻļā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ¨āĻŽā§āĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ āĻ¸ā§‚āĻšāĻ• āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖāĨ¤

āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ‡ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻŸāĻŋ āĻŦā§‹āĻ§āĻ—āĻŽā§āĻ¯ āĻšāĻ¯āĻŧ āĻ¯āĻ–āĻ¨ āĻĒā§āĻ°āĻļā§āĻ¨ā§‡ āĻĢāĻŋāĻ°ā§‡ āĻ†āĻ¸āĻž āĻ¸ā§‡āĻŸāĻŸāĻŋāĻ•ā§‡ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯āĻ­āĻžāĻŦā§‡ āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§ āĻ•āĻ°ā§‡āĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻŽāĻžāĻĻā§‡āĻ° 500000 āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° 2000 āĻ¸āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ†āĻ›ā§‡āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻŋāĻ¤ āĻ¸ā§‚āĻšāĻ• āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĨā§‡āĻ•ā§‡ āĻ°āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻŦā§‡ āĻ‡āĻ¨āĻĄā§‡āĻ•ā§āĻ¸ āĻ¸ā§āĻ•ā§āĻ¯āĻžāĻ¨ āĻāĻ•āĻŸāĻŋ āĻŦāĻĄāĻŧ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¨-āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ°āĻĄ āĻ¸ā§‚āĻšāĻ•ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĻā§āĻ°ā§āĻ¤ āĻĄā§‡āĻŸāĻž āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻŦā§‡āĨ¤

āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“, āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻĒāĻžāĻ°ā§āĻ¸āĻŋāĻ‚ āĻŦāĻž āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ­āĻŋāĻ‰ āĻĒāĻ°āĻŋāĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ¨ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻŽā§āĻĒāĻŸā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¸ā§‚āĻšāĻ•ā§‡āĻ° āĻ…āĻ­āĻžāĻŦ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻāĻŽāĻāĻ¸ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°:

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

āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ­āĻŋāĻ‰ āĻĄā§‡āĻŸāĻžāĻ¤ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻŋāĻ• āĻ¸ā§‚āĻšāĻ•āĻ—ā§āĻ˛āĻŋ āĻŦāĻžāĻĻ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ…āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻ¸ā§‚āĻšā§€āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¤āĻĨā§āĻ¯ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ā§ˇ

āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻ¸ā§‚āĻšā§€ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯āĻžāĻļāĻŋāĻ‚ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ‡ āĻ–āĻžāĻ°āĻžāĻĒāĻ­āĻžāĻŦā§‡ āĻ˛ā§‡āĻ–āĻžāĻ° āĻĒāĻ°āĻŋāĻŖāĻ¤āĻŋāĻ—ā§āĻ˛āĻŋāĻ° āĻŦāĻŋāĻ°ā§āĻĻā§āĻ§ā§‡ āĻ˛āĻĄāĻŧāĻžāĻ‡ āĻ•āĻ°āĻžāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋ LINQ āĻĒā§āĻ°āĻļā§āĻ¨ и āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻĒā§āĻ°āĻļā§āĻ¨.

āĻœā§€āĻŦāĻ¨ā§‡āĻ° āĻ•āĻ ā§‹āĻ° āĻ…āĻ¨ā§āĻļā§€āĻ˛āĻ¨ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ, āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§€āĻŽāĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ° āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻ—ā§āĻ˛āĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻž āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ‡ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖāĨ¤ āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ‡āĻœāĻ¨ā§āĻ¯, āĻ­āĻžāĻ°ā§€ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ‡ āĻ•ā§āĻ¯āĻžāĻļāĻŋāĻ‚ āĻ¸āĻš āĻĒāĻŸāĻ­ā§‚āĻŽāĻŋāĻ¤ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤

āĻāĻŸāĻŋ āĻ†āĻ‚āĻļāĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧāĻ¸āĻ™ā§āĻ—āĻ¤, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇ āĻĄā§‡āĻŸāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¯āĻŧ āĻ¨āĻž āĻāĻŦāĻ‚ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻļā§€āĻ˛āĻ¤āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ—ā§āĻ°āĻšāĻŖāĻ¯ā§‹āĻ—ā§āĻ¯ āĻ¸ā§āĻ¤āĻ° āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻāĻ‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ¯āĻŧā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĻ—ā§āĻ˛āĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻļā§‡āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻŦāĻŋāĻ˛āĻŽā§āĻŦāĻŋāĻ¤ āĻ•āĻ°ā§‡ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻž āĻšā§āĻ°āĻžāĻ¸ āĻ•āĻ°ā§‡āĨ¤

āĻāĻŸāĻž āĻŽāĻ¨ā§‡ āĻ°āĻžāĻ–āĻž āĻŽā§‚āĻ˛ā§āĻ¯āĻŦāĻžāĻ¨ āĻ¯ā§‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ¸ā§‚āĻšā§€ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡āĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻāĻŽāĻāĻ¸ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨ āĻ­ā§āĻ˛ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻļāĻ°ā§āĻ¤āĻžāĻŦāĻ˛ā§€ āĻ¸āĻš:

  1. āĻ¯āĻĻāĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ āĻ¸ā§‡āĻŸ āĻ¸āĻš āĻ¸ā§‚āĻšā§€ āĻĨāĻžāĻ•ā§‡
  2. āĻ¯āĻĻāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋ āĻ‡āĻ¨ā§āĻĄā§‡āĻ•ā§āĻ¸āĻŋāĻ‚ āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻžāĻ° āĻ•āĻžāĻ°āĻŖā§‡ āĻ¸ā§‚āĻšāĻŋāĻ¤ āĻ•āĻ°āĻž āĻ¨āĻž āĻ¯āĻžāĻ¯āĻŧ (āĻ†āĻ°ā§‹ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤āĻ­āĻžāĻŦā§‡ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡) āĻāĻ–āĻžāĻ¨ā§‡).

2) āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ā§‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻžā§ˇ

āĻ•āĻ–āĻ¨āĻ“ āĻ•āĻ–āĻ¨āĻ“ āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻĨā§‡āĻ•ā§‡ āĻ•āĻŋāĻ›ā§ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°, āĻ¯āĻž āĻļāĻ°ā§āĻ¤āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ—ā§āĻ°ā§āĻĒā§‡āĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡, āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻāĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻžāĻ¸ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦāĻŋāĻļā§‡āĻˇāĻ­āĻžāĻŦā§‡ āĻ¸āĻ¤ā§āĻ¯, āĻ¯ā§‡āĻ—ā§āĻ˛āĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻŦāĻŋāĻŸ āĻŦāĻž āĻĒā§‚āĻ°ā§āĻŖāĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ° āĻšāĻ¯āĻŧāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

āĻŦāĻ¨ā§āĻ§ = 0 āĻāĻŦāĻ‚ āĻŦāĻžāĻ¤āĻŋāĻ˛ = 0 āĻāĻŦāĻ‚ āĻ¸āĻ•ā§āĻˇāĻŽ = 0 āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻ…āĻŦāĻ¸ā§āĻĨāĻž = 1.

āĻāĻ–āĻžāĻ¨ā§‡āĻ‡ āĻĒā§‚āĻ°ā§āĻŖāĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻŸāĻŋ āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻžāĻ¤ā§‡ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯ā§‡ āĻāĻ‡ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻžāĻ¸āĻ—ā§āĻ˛āĻŋ āĻ¸āĻžāĻ°āĻŖāĻŋāĻ¤ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€, āĻāĻ‡ āĻ¨āĻ¤ā§āĻ¨ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻ¸ā§‚āĻšāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ.

āĻāĻŸāĻŋ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻŽā§ŒāĻ˛āĻŋāĻ• āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨, āĻ•āĻžāĻ°āĻŖ āĻ†āĻŽāĻ°āĻž āĻ…āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ—āĻŖāĻ¨āĻž āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻĄā§‡āĻŸāĻž āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻŋāĨ¤

3) āĻĻā§ƒāĻļā§āĻ¯ā§‡āĻ° āĻŦāĻ¸ā§āĻ¤ā§āĻ—āĻ¤ā§€āĻ•āĻ°āĻŖ

āĻĻā§āĻ°ā§āĻ­āĻžāĻ—ā§āĻ¯āĻŦāĻļāĻ¤ LINQ āĻĒā§āĻ°āĻļā§āĻ¨ āĻ…āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻŸā§‡āĻŦāĻŋāĻ˛, CTE, āĻāĻŦāĻ‚ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻŦā§‡ āĻ¨āĻžāĨ¤

āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻžāĻ° āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻ‰āĻĒāĻžāĻ¯āĻŧ āĻ†āĻ›ā§‡ - āĻ¸ā§‚āĻšā§€āĻ•ā§ƒāĻ¤ āĻ­āĻŋāĻ‰āĨ¤

āĻļāĻ°ā§āĻ¤ āĻ—ā§āĻ°ā§āĻĒ (āĻ‰āĻĒāĻ°ā§‡āĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻĨā§‡āĻ•ā§‡) āĻŦāĻ¨ā§āĻ§ = 0 āĻāĻŦāĻ‚ āĻŦāĻžāĻ¤āĻŋāĻ˛ = 0 āĻāĻŦāĻ‚ āĻ¸āĻ•ā§āĻˇāĻŽ = 0 (āĻ…āĻĨāĻŦāĻž āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§‡āĻŸ) āĻāĻ•āĻŸāĻŋ āĻŦāĻĄāĻŧ āĻ¸ā§‡āĻŸ āĻĨā§‡āĻ•ā§‡ āĻĄā§‡āĻŸāĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ›ā§‹āĻŸ āĻ¸ā§āĻ˛āĻžāĻ‡āĻ¸ āĻ•ā§āĻ¯āĻžāĻļ āĻ•āĻ°ā§‡, āĻāĻ•āĻŸāĻŋ āĻ¸ā§‚āĻšā§€āĻ•ā§ƒāĻ¤ āĻĻā§ƒāĻļā§āĻ¯ā§‡ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ˛ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻšāĻ¯āĻŧā§‡ āĻ“āĻ ā§‡āĨ¤

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ•āĻŸāĻŋ āĻĻā§ƒāĻļā§āĻ¯ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§‡āĻļ āĻ•āĻŋāĻ›ā§ āĻŦāĻŋāĻ§āĻŋāĻ¨āĻŋāĻˇā§‡āĻ§ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡:

  1. subqueries āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°, āĻ§āĻžāĻ°āĻž āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤ JOIN
  2. āĻ†āĻĒāĻ¨āĻŋ āĻŦāĻžāĻ•ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž āĻŽāĻŋāĻ˛āĻ¨, āĻ‡āĻ‰āĻ¨āĻŋāĻ¯āĻŧāĻ¨ āĻ¸āĻŦ, āĻ›āĻžāĻĄāĻŧ, āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻ¸ā§āĻ¯āĻžāĻ•ā§āĻŸ
  3. āĻ†āĻĒāĻ¨āĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ‡āĻ™ā§āĻ—āĻŋāĻ¤ āĻāĻŦāĻ‚ āĻ§āĻžāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€ OPTION
  4. āĻšāĻ•ā§āĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ•ā§‹āĻ¨ āĻ¸āĻŽā§āĻ­āĻžāĻŦāĻ¨āĻž āĻ¨ā§‡āĻ‡
  5. āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻĨā§‡āĻ•ā§‡ āĻāĻ• āĻ­āĻŋāĻ‰āĻ¤ā§‡ āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ•āĻ°āĻž āĻ…āĻ¸āĻŽā§āĻ­āĻŦ

āĻāĻŸāĻž āĻŽāĻ¨ā§‡ āĻ°āĻžāĻ–āĻž āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸ā§‚āĻšā§€āĻ•ā§ƒāĻ¤ āĻĻā§ƒāĻļā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻ•ā§ƒāĻ¤ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒā§āĻ°āĻ•ā§ƒāĻ¤āĻĒāĻ•ā§āĻˇā§‡ āĻ¸ā§‚āĻšā§€āĻ•āĻ°āĻŖā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ…āĻ°ā§āĻœāĻ¨ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ•āĻŸāĻŋ āĻ­āĻŋāĻ‰ āĻ•āĻ˛ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻ‡ āĻ¸ā§‚āĻšā§€āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻŦā§‡ āĻ¨āĻž, āĻāĻŦāĻ‚ āĻ¸ā§āĻĒāĻˇā§āĻŸāĻ­āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¸āĻ™ā§āĻ—ā§‡ (NOEXPAND).

ā§§ Since āĻ¸āĻžāĻ˛ āĻĨā§‡āĻ•ā§‡ LINQ āĻĒā§āĻ°āĻļā§āĻ¨ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ‡āĻ™ā§āĻ—āĻŋāĻ¤āĻ—ā§āĻ˛āĻŋ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻž āĻ…āĻ¸āĻŽā§āĻ­āĻŦ, āĻ¤āĻžāĻ‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻ‰āĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ - āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻĢāĻ°ā§āĻŽā§‡āĻ° āĻāĻ•āĻŸāĻŋ "āĻ°ā§āĻ¯āĻžāĻĒāĻžāĻ°":

CREATE VIEW Đ˜ĐœĐ¯_ĐŋŅ€ĐĩĐ´ŅŅ‚авĐģĐĩĐŊиŅ AS SELECT * FROM MAT_VIEW WITH (NOEXPAND);

4) āĻŸā§‡āĻŦāĻŋāĻ˛ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡

āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ‡ āĻŽāĻ§ā§āĻ¯ā§‡ LINQ āĻĒā§āĻ°āĻļā§āĻ¨ āĻ¸āĻžāĻŦāĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋāĻ° āĻŦāĻĄāĻŧ āĻŦā§āĻ˛āĻ• āĻŦāĻž āĻāĻ•āĻŸāĻŋ āĻœāĻŸāĻŋāĻ˛ āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ° āĻ­āĻŋāĻ‰ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻŦā§āĻ˛āĻ•āĻ—ā§āĻ˛āĻŋ āĻ–ā§āĻŦ āĻœāĻŸāĻŋāĻ˛ āĻāĻŦāĻ‚ āĻ¸āĻžāĻŦāĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ˛ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻļāĻ¨ āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•āĻšāĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻĒā§āĻ°āĻļā§āĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĨ¤

āĻŽāĻ§ā§āĻ¯ā§‡ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻŽā§‚āĻ˛ āĻ¸ā§āĻŦāĻŋāĻ§āĻž LINQ āĻĒā§āĻ°āĻļā§āĻ¨:

  1. āĻ•ā§āĻˇāĻŽāĻ¤āĻž, āĻĻā§ƒāĻļā§āĻ¯ā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻāĻ•āĻŸāĻŋ āĻŦāĻ¸ā§āĻ¤ā§ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻŦāĻ‚ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻĒāĻ¨āĻŋ āĻ‡āĻ¨āĻĒā§āĻŸ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§‡āĻŸ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨:
    āĻĢāĻžāĻ‚āĻļāĻ¨ āĻĨā§‡āĻ•ā§‡ (@param1, @param2 ...)
    āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ¨āĻŽāĻ¨ā§€āĻ¯āĻŧ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻ¯āĻžāĻŽā§āĻĒāĻ˛āĻŋāĻ‚ āĻ…āĻ°ā§āĻœāĻ¨ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡
  2. āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ‰āĻĒāĻ°ā§‡ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻ¸ā§‚āĻšā§€āĻ•ā§ƒāĻ¤ āĻĻā§ƒāĻļā§āĻ¯ā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻāĻŽāĻ¨ āĻ•ā§‹āĻ¨ āĻļāĻ•ā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§€ āĻŦāĻŋāĻ§āĻŋāĻ¨āĻŋāĻˇā§‡āĻ§ āĻ¨ā§‡āĻ‡:
    1. āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ‡āĻ™ā§āĻ—āĻŋāĻ¤:
      āĻĻā§āĻŦāĻžāĻ°āĻž āĻ˛āĻŋāĻ¨āĻ•ā§āĻ‡ āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§‹āĻ¨ āĻ¸ā§‚āĻšā§€ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĄā§‡āĻŸāĻž āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨āĻ¤āĻž āĻ¸ā§āĻ¤āĻ° āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨ āĻ¨āĻžāĨ¤
      āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻāĻ‡ āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ†āĻ›ā§‡.
      āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻŽā§‹āĻŸāĻžāĻŽā§āĻŸāĻŋ āĻ§ā§āĻ°ā§āĻŦāĻ• āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻļāĻ¨ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻ…āĻ°ā§āĻœāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ‡āĻ¨āĻĄā§‡āĻ•ā§āĻ¸ āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻ†āĻ‡āĻ¸ā§‹āĻ˛ā§‡āĻļāĻ¨ āĻ˛ā§‡āĻ­ā§‡āĻ˛āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻ—ā§āĻ˛āĻŋ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ
    2. āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡, āĻ¸ā§‚āĻšā§€āĻ•ā§ƒāĻ¤ āĻĻā§ƒāĻļā§āĻ¯ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¤ā§āĻ˛āĻ¨āĻž āĻ•āĻ°ā§‡, āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧ:
      • āĻœāĻŸāĻŋāĻ˛ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻ¯āĻžāĻŽā§āĻĒāĻ˛āĻŋāĻ‚ āĻ˛āĻœāĻŋāĻ• (āĻāĻŽāĻ¨āĻ•āĻŋ āĻ˛ā§āĻĒ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡)
      • āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻĨā§‡āĻ•ā§‡ āĻĄā§‡āĻŸāĻž āĻ†āĻ¨āĻž āĻšāĻšā§āĻ›ā§‡
      • āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻŽāĻŋāĻ˛āĻ¨ и āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤

  3. āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€ OPTION āĻ¯āĻ–āĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻ¯ā§‹āĻ—ā§‡ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧ āĻ¤āĻ–āĻ¨ āĻ–ā§āĻŦ āĻĻāĻ°āĻ•āĻžāĻ°ā§€ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ (MAXDOP N), āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻļāĻ¨ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ā§‡āĻ° āĻ•ā§āĻ°āĻŽāĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ:
    • āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻœā§‹āĻ°āĻĒā§‚āĻ°ā§āĻŦāĻ• āĻĒā§āĻ¨āĻƒāĻ¸ā§ƒāĻˇā§āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ (āĻĒā§āĻ¨āĻƒāĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛)
    • āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€āĻ¤ā§‡ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻŋāĻ¤ āĻ¯ā§‹āĻ—āĻĻāĻžāĻ¨ā§‡āĻ° āĻ†āĻĻā§‡āĻļ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨āĻ•ā§‡ āĻŦāĻžāĻ§ā§āĻ¯ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ•āĻŋāĻ¨āĻž āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ (āĻĢā§‹āĻ°ā§āĻ¸ āĻ…āĻ°ā§āĻĄāĻžāĻ°)

    āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ†āĻ°ā§‹ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€ OPTION āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻāĻ–āĻžāĻ¨ā§‡.

  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])
));

āĻ­āĻŋāĻ‰āĻŸāĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻŦāĻ°āĻ‚ āĻœāĻŸāĻŋāĻ˛ āĻ—āĻ āĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: āĻāĻ¤ā§‡ āĻ¸āĻžāĻŦāĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋ āĻ¯ā§‹āĻ— āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻŦāĻžāĻ›āĻžāĻ‡ āĻ•āĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¸ā§āĻŦāĻ¤āĻ¨ā§āĻ¤ā§āĻ°, āĻ¯āĻž āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻŽā§‹āĻŸāĻžāĻŽā§āĻŸāĻŋ āĻ¸āĻŽā§āĻĒāĻĻ-āĻ¨āĻŋāĻŦāĻŋāĻĄāĻŧ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨āĨ¤

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();

āĻāĻ‡ āĻŦāĻŋāĻļā§‡āĻˇ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻĒāĻ°āĻŋāĻ•āĻžāĻ āĻžāĻŽā§‹āĻ—āĻ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻāĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°āĻ›āĻŋ, āĻ°ā§‡āĻĄāĻŋāĻŽā§‡āĻĄ āĻĢāĻ˛āĻžāĻĢāĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• āĻ¸āĻžāĻ°āĻŖā§€ āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¨āĻž āĻ•āĻ°ā§‡ ("āĻ…ā§āĻ¯āĻžāĻ•āĻŸāĻŋāĻ­ āĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋ"), āĻ¯āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻŸāĻŋ āĻĄā§‡āĻŸāĻž āĻĻāĻŋāĻ¯āĻŧā§‡ āĻĒā§‚āĻ°āĻŖ āĻ•āĻ°āĻžāĻ° āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ†āĻĒ āĻŸā§ āĻĄā§‡āĻŸ āĻ°āĻžāĻ–āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻŦā§‡āĨ¤ .

āĻ¯āĻĻāĻŋāĻ“ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ˛ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨, āĻāĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻŸāĻŋ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻžāĻ° āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻŽā§‚āĻ˛ āĻ‰āĻĻā§āĻĻā§‡āĻļā§āĻ¯ āĻšāĻ˛ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻŋāĻ­ āĻĒā§āĻ°āĻļā§āĻ¨ āĻ­āĻŋāĻ‰ āĻĨā§‡āĻ•ā§‡ [āĻ‡āĻŽā§‡āĻ˛] = @p__linq__0 āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻ¨ā§āĻŸā§āĻ°āĻŋ āĻ•ā§āĻ¯āĻžāĻļā§‡ āĻ•āĻ°āĻžāĨ¤

āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻĢāĻžāĻ‚āĻļāĻ¨ [āĻĄāĻŋāĻŦāĻŋāĻ“] [āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻŋāĻ­ āĻĒā§āĻ°āĻļā§āĻ¨ āĻ‡āĻ‰āĻœāĻžāĻ°āĻŽā§‡āĻ˛] āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§āĻ¨āĨ¤

āĻāĻ•āĻŸāĻŋ āĻ‡āĻ¨āĻĒā§āĻŸ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ‡āĻŽā§‡āĻ˛ āĻĒāĻžāĻ āĻžāĻ¨ā§‹āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡, āĻ†āĻŽāĻ°āĻž āĻŽāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻĢāĻŋāĻ°ā§‡ āĻĒāĻžāĻ‡:

āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ¨āĻ‚ 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. āĻ—ā§āĻ°āĻšāĻŖāĻ¯ā§‹āĻ—ā§āĻ¯ āĻŽāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ—āĻĄāĻŧ āĻŦā§āĻ˛āĻ•āĻŋāĻ‚ āĻ¸āĻŽāĻ¯āĻŧ āĻšā§āĻ°āĻžāĻ¸ āĻ•āĻ°āĻž

āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°

āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻ•āĻ˛ā§‡āĻ° āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻāĻŦāĻ‚ āĻĢāĻžāĻ‡āĻ¨-āĻŸāĻŋāĻ‰āĻ¨āĻŋāĻ‚ āĻāĻŽāĻāĻ¸ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ˛āĻŋāĻ¨āĻ•ā§āĻ‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻāĻ‡ āĻ•āĻžāĻœā§‡ āĻŽāĻ¨ā§‹āĻ¯ā§‹āĻ— āĻāĻŦāĻ‚ āĻ§āĻžāĻ°āĻžāĻŦāĻžāĻšāĻŋāĻ•āĻ¤āĻž āĻ–ā§āĻŦāĻ‡ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖāĨ¤

āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻļā§āĻ°ā§āĻ¤ā§‡:

  1. āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻŸāĻŋ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻāĻŽāĻ¨ āĻĄā§‡āĻŸāĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ (āĻŽāĻžāĻ¨, āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻŋāĻ¤ āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ•āĻžāĻ°)
  2. āĻāĻ‡ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻ āĻŋāĻ• āĻ¸ā§‚āĻšā§€ āĻŦāĻšāĻ¨
  3. āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¯ā§‹āĻ—āĻĻāĻžāĻ¨ā§‡āĻ° āĻļāĻ°ā§āĻ¤āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻ āĻŋāĻ•āĻ¤āĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°ā§āĻ¨

āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°ā§‡:

  1. āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ¤ā§‡ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°ā§‡
  2. āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŦā§āĻ˛āĻ• āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋ āĻāĻŦāĻ‚ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ° āĻ›ā§‡āĻĻ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ
  3. āĻāĻ° āĻœāĻ¨ā§āĻ¯ SSMS āĻŦāĻž āĻ…āĻ¨ā§āĻ¯ GUI-āĻ¤ā§‡ SQL āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¨āĻŋāĻœā§‡āĻ•ā§‡ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°ā§‡ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋ (āĻāĻ•āĻŸāĻŋ āĻŽāĻ§ā§āĻ¯āĻŦāĻ°ā§āĻ¤ā§€ āĻĄā§‡āĻŸāĻž āĻ¸āĻžā§āĻšāĻ¯āĻŧāĻ¸ā§āĻĨāĻžāĻ¨ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ•āĻ°āĻž, āĻāĻ‡ āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž (āĻāĻ–āĻžāĻ¨ā§‡ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻĨāĻžāĻ•āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡))
  4. āĻļā§‡āĻˇ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§‡, āĻāĻ•āĻŸāĻŋ āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ—ā§āĻ°āĻšāĻŖ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋ, āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻĒā§āĻ¨āĻ°ā§āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡ LINQ āĻĒā§āĻ°āĻļā§āĻ¨

āĻĢāĻ˛ā§‡ LINQ āĻĒā§āĻ°āĻļā§āĻ¨ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ…āĻ¨ā§āĻ•ā§‚āĻ˛ āĻĨā§‡āĻ•ā§‡ āĻ—āĻ āĻ¨ āĻ…āĻ­āĻŋāĻ¨ā§āĻ¨ āĻšāĻ¤ā§‡ āĻšāĻŦā§‡ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ 3 āĻĨā§‡āĻ•ā§‡āĨ¤

āĻ¸ā§āĻŦā§€āĻ•ā§ƒāĻ¤āĻŋ

āĻ¸āĻšāĻ•āĻ°ā§āĻŽā§€āĻĻā§‡āĻ° āĻ…āĻ¨ā§‡āĻ• āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ jobgemws и alex_ozr āĻ•ā§‹āĻŽā§āĻĒāĻžāĻ¨āĻŋ āĻĨā§‡āĻ•ā§‡ āĻ¸ā§āĻŸā§āĻ°āĻ‚ āĻāĻ‡ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯āĨ¤

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨