2009-11-01

Query –ны хурдыг сайжруулах зарим зөвлөмжүүд

  1. “SELECT * FROM …” гэж бүх баганыг мэдээллийн сангаас унших биш өөрт шаардлагатай цөөн хэдэн багануудаа л нэг бүрчлэн нэрээр нь зааж мэдээллийн сангаас уншвал илүү хурдан ажиллана.
  2. WHERE дээр аль болох sargable биш операторуудын оронд sargable оператор ашиглавал илүү хурдан
  3. WHERE дээр ашиглагдаж байгаа баганууд бүгд индексгүй тохиолдолд OR операторыг аль болох ашиглахаас татгалзах
  4. Боломжтой бол UNION –ны оронд UNION ALL –ыг ашиглавал илүү хурдан
  5. Нэг хүснэгтээс гаргасан хоёр тусдаа бичлэгүүдийг UNION хийж нэгтгэхгүй байх. Харин түүний оронд WHERE дээр OR ашиглан нэгтгэсэн бичлэгийг шууд гаргаж авсан нь илүү хурдан.
  6. Хүснэгтэнд тодорхой нэг нөхцөлийг хангах бичлэг байгаа эсэхийг шалгахдаа COUNT(*) бус EXISTS –ийг ашиглавал илүү хурдан ажиллана.
  7. Бүх бичлэгүүдийг биш зөвхөн хэрэгтэй бичлэгүүдийг WHERE дээр шүүлтүүр хийж авч байх
  8. Хүснэгтээс NULL өгөгдөлтэй бичлэгүүдийг шалгахдаа NOT IN –ийн оронд EXISTS, NOT EXISTS, IN эсвэл LEFT JOIN гэсэн операторуудыг ашиглавал илүү үр дүнтэй
  9. Хэрэв EXISTS –ийг ашиглах боломжтой бол аль болох IN операторыг ашиглахаас татгалзах
  10. Хэрэв BETWEEN –ийг ашиглах боломжтой бол аль болох IN операторыг ашиглахаас татгалзах
  11. IN операторыг ашиглан шүүлт хийхдээ байнга ашиглагддаг буюу хамгийн түрүүнд олдох өгөгдлөөс нь эхэлж эрэмбэлэн ашиглавал илүү хурдан ажиллана
  12. Боломжтой бол WHERE дээр бичлэгүүдийг шүүлт хийхдээ SUBSTRING –ийн оронд LIKE –ийг ашиглах нь илүү хурдан
  13. Үнэхээр шаардлагатай л биш бол ORDER BY –ыг ашиглахаас татгалзах
  14. Query –нд бичлэгүүдийг эрэмбэлэхдээ аль болох шаардлагагүй багануудаар эрэмбэлэхгүй байх
  15. Аль болох цөөн тооны мөртэй бичлэгүүдийг эрэмблэх
  16. Байнга эрэмбэлэлт хийдэг багануудын хувьд класстер индекс (clustered index)  үүсгэж ашиглах нь илүү хурдан
  17. Хэрэв GROUP BY –ыг aggregate function (SUM, COUNT,…) оролцуулалгүйгээр ашиглан, бичлэгүүдийг давхардуулахгүй авахыг хүсэж байгаа бол DISTINCT ашигласан нь илүү хурдан

Дээрх зөвлөмжүүд нь SQL Server -ээс гадна MSAccess, Oracle, MySQL гэх мэт бусад мэдээллийн баазын хувьд хэрэгжүүлэхэд мөн ялгаагүй Query -г хурдасгах боломжтой.

Танд амжилт хүсье!