PDA

View Full Version : درج بین اسناد



حمیدرضاصادقیان
چهارشنبه 09 تیر 1389, 16:50 عصر
سلام.من در جدول سند یک فیلد برای شماره سند دارم.
حالا برای درج بین اسناد از کوئری زیر استفاده کردم


update f_sanad set sanad=sanad+1 where sanad>10

الان سرعتش روی 5000 ردیف بد نیست.ولی روی 40000 ردیف 20 ثانیه طول میکشه.
آیا روشی برای بهینه تر کردن این وجود داره؟
میشه کوئری رو به روش دیگه ای نوشت؟پ
باتشکر

AminSobati
چهارشنبه 09 تیر 1389, 23:02 عصر
سلام حمید جان،
میتونین Plan رو بفرستین؟

Mostafa_Dindar
چهارشنبه 09 تیر 1389, 23:20 عصر
با اجازه استاد ,

در این موارد که تعداد رکوردها زیاد هست , Partioning فوق العاده تو کارایی تاثیر میزاره .

حمیدرضاصادقیان
پنج شنبه 10 تیر 1389, 00:38 صبح
بله.partitioning درسته ولی دیگه نه روی 20 -30 هزار رکورد.

Mostafa_Dindar
پنج شنبه 10 تیر 1389, 01:08 صبح
بله.partitioning درسته ولی دیگه نه روی 20 -30 هزار رکورد.

من منظورتون رو متوجه نمیشم , 20-30 هزار رکورد که چیزی نیست , این بسته به نیاز شما و نحوه Partitioning هست که میتونه فوق العاده کارایی رو بهینه کنید .

در صورت امکان Script جدول سند (به صورت کامل یعنی همراه با Index ها ) همراه با کوئری های احتمالی دیگری را که لازم است از این جدول بگیرید رو هم بزارید .

حمیدرضاصادقیان
پنج شنبه 10 تیر 1389, 09:23 صبح
سلام.
استاد ثباتی اینم plan.

AminSobati
پنج شنبه 10 تیر 1389, 20:14 عصر
سلام حمید جان،
این دستور طول کشیدنش غیر منطقی هم نیست چون داره تقریبا 250هزار رکورد رو Update میکنه. به هر حال این ایندکس رو بساز و Plan رو مجددا ارسال کن:



create unique index ix1 on f_sanad (sanad,Rdf )
include ( Kol_n, Moen_n, Tafzil_n, Price, Bd_bs, Date1, Typ, User1, Sanadold, Markaz, ghatei, disk1, T_print)

حمیدرضاصادقیان
پنج شنبه 10 تیر 1389, 23:12 عصر
سلام.ممنون.
البته این نکته رو بگم این جدول طراحیش ایراد داره.چون هدر و فوتر
سند در یک جدول هست. به همین خطار update الکی زیاد انجام میشه.
مثلا همین 40 هزار رکورد میتونه حدود 10 هزار رکورد باشه که بروز میشه.
ولی چرا 250 هزار رکورد؟؟

AminSobati
جمعه 11 تیر 1389, 13:37 عصر
در Plan اگر نگاه کنید، از اولین Operator که Index Seek هست حدود 250هزار رکورد استخراج شده (ماوس رو روی فلش ببرین و به Actual Number of Rows دقت کنید)

حمیدرضاصادقیان
شنبه 12 تیر 1389, 08:08 صبح
استاد سلام.
این plan جدید هست.
ولی زمان اون 4:20 ثانیه بود.

AminSobati
شنبه 12 تیر 1389, 11:57 صبح
پس وضعیت بهتر نشد. سوالی برای من مطرحه و اون اینکه آیا فیلد Sanad که بعنوان PK استفاده شده، در سایر جداول هم بعنوان FK شرکت داره؟

حمیدرضاصادقیان
شنبه 12 تیر 1389, 14:02 عصر
سلام.نه در هیچ جدولی استفاده نشده.فقط جدول سند رو بروز میکنه.

AminSobati
شنبه 12 تیر 1389, 23:18 عصر
یک مورد رو امتحان کنین. ایندکس مربوط به PK رو از حالت Clustered خارج و Nonclustered کنید. ببینید آیا در سرعت Update تاثیر میگذاره یا خیر