نمایش نتایج 1 تا 5 از 5

نام تاپیک: چه روش سریعی برای Row Count وجود دارد؟

  1. #1
    کاربر دائمی آواتار mehrpars
    تاریخ عضویت
    مهر 1386
    محل زندگی
    شيراز
    سن
    40
    پست
    161

    چه روش سریعی برای Row Count وجود دارد؟

    سلام ،
    سریعترین روش برای گرفتن query از روی سرور چیه ؟
    من از OpenRowSet استفاده کردم ، سرعت اینترنتم 128k هست ولی واسه برگردوندن 300 تا رکورد حدود 20 تا 30 ثانیه معطلی داره .
    این نکته رو هم بگم که فیلدهارو بر نمی گردونم و فقط از count(*) استفاده میکنم والا این تایم بیشتر هم می شه

  2. #2
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1385
    محل زندگی
    اصفهان
    پست
    70

    نقل قول: سریعترین روش چیه؟؟؟؟؟

    با سلام
    بهتره به جای
    Count(*)

    از
    Count(ID)
    یا هر فیلد دیگه ای که ترجیحا کلید هم باشه استفاده کنین بهتره
    چون
    Count(*)
    به خاطر * خود SQL باید یک Execution plan کامل برای این Select بسازه و این خودش روی حجم داده بالا عمل زمان بری هست

    موفق باشید

  3. #3

    نقل قول: سریعترین روش چیه؟؟؟؟؟

    نقل قول نوشته شده توسط 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




    عکس های ضمیمه عکس های ضمیمه
    وبلاگ من (Advanced SQL Querying)

  4. #4
    کاربر دائمی آواتار mehrpars
    تاریخ عضویت
    مهر 1386
    محل زندگی
    شيراز
    سن
    40
    پست
    161

    نقل قول: سریعترین روش چیه؟؟؟؟؟

    ممنون از پاسخهاتون ،
    در نهایت چکار می شه کرد ؟ من حتی یا delete و insert into کامل جدول به زمان کمتری می رسم و فقط با select count مشکل دارم

    در ضمن count(*) و Count(index) هم با هم فرقی نداشت و بصورت تصادفی زمانهای مختلفی داشتم

  5. #5

    نقل قول: سریعترین روش چیه؟؟؟؟؟

    نقل قول نوشته شده توسط 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
    وبلاگ من (Advanced SQL Querying)

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •