ورود

View Full Version : زمان اجرای کوئری



Happy_davood
یک شنبه 23 اردیبهشت 1386, 18:33 عصر
سلام
من یه SELECT خیلی ساده از یک View میزنم :


SELECT Sum(Amount) FROM StocksView WHERE StockCode = '10000'

وقتی که این View پنچ هزار سطر داره تقریباً نیم ثانیه اجراش طول می کشه .

مشکل اینجاست که بانک من هنوز روز های اول رو سپری می کنه و تا شش برابر می تونه بزرگتر بشه . که در این حالت این زمان به 3 ثانیه هم خواهد رسید . مشکل اینجاست که در بعضی از فرم ها ممکنه همین کار 10 بار انجام بشه که در اینصورت .....

آیا مثلاً با روش هایی مثل ایندکس گذاشتن روی StockCode میشه این زمان رو کمتر کرد ؟

AminSobati
یک شنبه 23 اردیبهشت 1386, 23:15 عصر
به احتمال 99 درصد بله! ولی لازمه که خود View و Execution Plan بررسی بشه

Happy_davood
دوشنبه 24 اردیبهشت 1386, 21:37 عصر
بی زحمت بیشتر توضیح بدید

rezaei manesh
سه شنبه 25 اردیبهشت 1386, 16:28 عصر
سلام
من هم می خواهم در مورد این Execution Plan بیشتر بدونم
چطور باید 2 Execution Plan را با هم مقایسه کنیم و اونی که بهتره رو شناسایی کنیم ؟

حمیدرضاصادقیان
سه شنبه 25 اردیبهشت 1386, 20:24 عصر
در سایت sql-server-performance.com درباره Execution plan کامل توضیح داده و تمامی اجزا آن رو تشریح کرده.

AminSobati
سه شنبه 25 اردیبهشت 1386, 22:13 عصر
در حقیقت 2 نوع Plan میتونین از محیط SSMS یا QA دریافت کنین. یکی Estimated و یکی Actual.
برای Estimated، کلید Ctrl+L رو بزنید. در صورتیکه دو یا چند Query رو داشته باشید، Plan همه اونها بدست میاد. در بالای هر Plan یک Query Cost نشون میده. این میتونه ملاکی باشه برای اینکه ببینید کدوم Query احتمالا بهتر عمل خواهد کرد. اما در حالت Estimated واقعا Query شما اجرا نمیشه، فقط Compile میشه.
برای دیدن Actual، در SSMS کلید Ctrl+M و در QA کلید Ctrl+K رو بزنید. بعد از اجرای Query، به غیر از Result، شما یک Tab برای Plan خواهید داشت.
در Actual جزئیات بیشتر و دقیقتری وجود داره.
در SQL Server 2005 میتونین set statistics xml on رو اجرا کنین و بعد از اون Query.
در این حالت Plan رو بصورت XML میده که هیچ کدوم از حالتهای دیگه این جزئیات رو ندارند. این سند XML با پسوند sqlplan قابل ذخیره سازیه و بعدا میتونین حتی بدون وجود Query یا دیتابیس، Plan رو بصورت گرافیکی ببینید.