# پایگاه‌های داده > SQL Server > مدیریت دیتابیس (Database Administration) > Maintenance Plan >  بهینه کردن جستجو برای تاریخ ذخیره شده به شکل nvarchar

## silverfox

سلام
یه سیستم قدیمی داریم که توش ساعت ها و تاریخ ها به شکل شمسی و nvarchar ذخیره شدن '1387/02/15' یا '12:05'، داده ها هم بعد از سال ها خیلی زیاد شده و دیتابیس خیلی کند شده طوری که سیستم قابل استفاده نیست.
روی این تاریخ ها query داریم به این شکل که بین 2 تاریخ، قبل از یک تاریخ و یا ساعت و اینا همش به طور مقایسه stringی هست. WHERE Date between ازینا
یه بررسی که انجام دادیم دیدیم یه بخش زیادی از زمان اجرای query ها رو این بخش به خودش اختصاص داده.
sql server 2000 هم هست سیستم، با توجه به اینکه شاید امکان تغییر کد برنامه و استفاده از datatype مناسب تر وجود نداشته باشد(یه سری از کوئری ها hardcode شدن یا داینامیک درون برنامه تولید می شن و برنامه بزرگتر از اونه که بشه به راحتی پیدا کرد و تغییر داده کد رو)، کار دیگه ای هست که بتونیم از طرف DBMS انجام بدیم؟ index گذاری روی این فیلد nvarchar به نظرتون تغییر خاصی ایجاد می کنه؟ پیشنهاد دیگه ای دارین؟

----------


## sempay_ninjutsu

> سلام
> یه سیستم قدیمی داریم که توش ساعت ها و تاریخ ها به شکل شمسی و nvarchar ذخیره شدن '1387/02/15' یا '12:05'، داده ها هم بعد از سال ها خیلی زیاد شده و دیتابیس خیلی کند شده طوری که سیستم قابل استفاده نیست.
> روی این تاریخ ها query داریم به این شکل که بین 2 تاریخ، قبل از یک تاریخ و یا ساعت و اینا همش به طور مقایسه stringی هست. WHERE Date between ازینا
> یه بررسی که انجام دادیم دیدیم یه بخش زیادی از زمان اجرای query ها رو این بخش به خودش اختصاص داده.
> sql server 2000 هم هست سیستم، با توجه به اینکه شاید امکان تغییر کد برنامه و استفاده از datatype مناسب تر وجود نداشته باشد(یه سری از کوئری ها hardcode شدن یا داینامیک درون برنامه تولید می شن و برنامه بزرگتر از اونه که بشه به راحتی پیدا کرد و تغییر داده کد رو)، کار دیگه ای هست که بتونیم از طرف DBMS انجام بدیم؟ index گذاری روی این فیلد nvarchar به نظرتون تغییر خاصی ایجاد می کنه؟ پیشنهاد دیگه ای دارین؟


index گذاری قطعا تاثیر داره ...پزارشاتی که شما میدین به چه صورتی است؟آیا این گزارشات بصورت آنلاین هست یا خیر؟؟اگر گزارشات بصورت آنلاین نیست میتونی از ssis استفاده کنی و دیتاهاتو تمیز کنی و این ssis رو بصورت شبانه بزاری اجرا بشه و در داخل یه table دیگه بریزی و بعد از اون جدول بخونی.....
باز هم اینها راه کارهایی است که بصورت عمومی است برای دقیق تر باید دیتابیس دیده بشه ....گزارشات شما مشخص بشه و .....
موفق باشید

----------


## pezhvakco

> یه بررسی که انجام دادیم دیدیم یه بخش زیادی از زمان اجرای query ها رو این بخش به خودش اختصاص داده.


شاید ساختار VarChar برای ستون تاریخ زیاد مناسب نباشد ولی نباید این جور هم که شما نوشتید سنگین باشه در اجرا.

بد نیست مشکل را در جای دیگه (SP های نوشته شده، فرستادن و گرفتن پارامتر ها، روش نمایش داده ها و ... ) پیگیری نمایید.

----------

