چه روش سریعی برای Row Count وجود دارد؟
سلام ،
سریعترین روش برای گرفتن query از روی سرور چیه ؟
من از OpenRowSet استفاده کردم ، سرعت اینترنتم 128k هست ولی واسه برگردوندن 300 تا رکورد حدود 20 تا 30 ثانیه معطلی داره .
این نکته رو هم بگم که فیلدهارو بر نمی گردونم و فقط از count(*) استفاده میکنم والا این تایم بیشتر هم می شه:اشتباه:
نقل قول: سریعترین روش چیه؟؟؟؟؟
با سلام
بهتره به جای
Count(*)
از
Count(ID)
یا هر فیلد دیگه ای که ترجیحا کلید هم باشه استفاده کنین بهتره
چون Count(*)
به خاطر * خود SQL باید یک Execution plan کامل برای این Select بسازه و این خودش روی حجم داده بالا عمل زمان بری هست
موفق باشید
1 ضمیمه
نقل قول: سریعترین روش چیه؟؟؟؟؟
نقل قول:
نوشته شده توسط
amir_alaki
با سلام
بهتره به جای
Count(*)
از
Count(ID)
یا هر فیلد دیگه ای که ترجیحا کلید هم باشه استفاده کنین بهتره
چون
Count(*)
به خاطر * خود SQL باید یک Execution plan کامل برای این Select بسازه و این خودش روی حجم داده بالا عمل زمان بری هست
موفق باشید
سلام دوست من،
نمی شه به همین سادگی در این مورد قضاوت کرد.
دو تابع زیر از لحاظ منطقی با یکدیگر متفاوت هستند و ممکن است در سناریو های مختلف نتیجه های مختلفی بدهند:
COUNT(*)
COUNT(I)
در ضمن عملکرد هر دو روش یکسان هست به Query و Plan زیر توجه کنید:
set nocount on
select cnt=COUNT(i) from (select 1 union all select 1 union all select null)d(i)
select cnt=COUNT(*) from (select 1 union all select 1 union all select null)d(i)
cnt
-----------
2
Warning: Null value is eliminated by an aggregate or other SET operation.
cnt
-----------
3
http://www.barnamenevis.org/at...1&d=1274349021
نقل قول: سریعترین روش چیه؟؟؟؟؟
ممنون از پاسخهاتون ،
در نهایت چکار می شه کرد ؟ من حتی یا delete و insert into کامل جدول به زمان کمتری می رسم و فقط با select count مشکل دارم
در ضمن count(*) و Count(index) هم با هم فرقی نداشت و بصورت تصادفی زمانهای مختلفی داشتم
نقل قول: سریعترین روش چیه؟؟؟؟؟
نقل قول:
نوشته شده توسط
mehrpars
ممنون از پاسخهاتون ،
در نهایت چکار می شه کرد ؟ من حتی یا delete و insert into کامل جدول به زمان کمتری می رسم و فقط با select count مشکل دارم
در ضمن count(*) و Count(index) هم با هم فرقی نداشت و بصورت تصادفی زمانهای مختلفی داشتم
یک مقاله ی عالی برای این مساله پیدا کردم، حتما بخوانید:
http://sqlserver2000.databases.aspfa...ow-counts.html
با استفاده از مطالب مقاله این روش را بدست آوردم. امتحانش کنید:
DECLARE @t TABLE(name varchar(500), rows int, reserved varchar(500), data varchar(500), index_size varchar(500), unused varchar(500))
INSERT INTO @t EXECUTE sp_spaceused 'boats'
SELECT rows FROM @t