PDA

View Full Version : نحوه ایندکس سازی و استفاده از جدول



hr110
یک شنبه 01 خرداد 1384, 12:07 عصر
سلام؛
یک بانک اطلاعاتی با حدود سه جدول بسیار بزرگ وجود دارد(7 میلیون رکورد وحجم کل بانک اطلاعاتی 45 گیگا بایت میباشد).
هر کدامیک از جداول حدود 30 فیلد دارند که تنها برخی از این فیلدها قابل جستجو میباشند و کاربر نیاز دارد بروی آنها جستجو کند.
هیچ ارتباطی بین جداول وجود ندارد.
فیلدهای قابل جستجو nText و یا nvarchar میباشند.

سوال؟
1- آیا برای تمامی فیلدها باید جداگانه ایندکس ایجاد کرد.
2- نوع ایندکسها و نحوه تعریف آنها چگونه باشد.
3- ایجاد تعداد 30 ایندکس در یک جدول از نظر ورود اطلاعات بعدی و ایندکس سازی و ... مشکل ساز نخواهد بود.
4- آیا به نظر شما استفاده از Full Text Search میتواند گزینه بهتری باشد و از نظر عملی مشکل ساز نخواهد بود.



:flower:

AminSobati
دوشنبه 02 خرداد 1384, 00:46 صبح
1- آیا برای تمامی فیلدها باید جداگانه ایندکس ایجاد کرد.
قطعا نه دوست عزیزم! متاسفانه اکثرا تصور میکنند که وقتی جداول طراحی شد، باید ایندکسها ساخته بشن. در حالیکه این کار(ساخت ایندکس) جزء آخرین مراحل طراحی محسوب میشه. چرا؟ چون ایندکس باید بر طبق نیاز هر Query بدست بیاد. وقتی تمام Queryها مشخص شد، در مورد ایندکسها میشه فکر کرد. هر ایندکسی به Queryها کمک نخواهد کرد. داشتن ایندکسهای نا کارآمد، فقط باعث کند شدن ویراش اطلاعات میشه.
ضمنا وقتی حجم اطلاعات شما کم باشه، روش Query Optimizer فرق میکنه با وقتی که حجم اطلاعات زیاده. لذا یک Admin هوشیار، میبایست هر چند ماه یکبار Queryهای سنگین رو چک کنه (با مشاهده Execution Plan) تا اگر به ایندکسهای جدید نیازه، اونها رو ایجاد کنه

2- نوع ایندکسها و نحوه تعریف آنها چگونه باشد
این نیاز به آنالیز داره و چیزی نیست که بشه براش فرمول ارائه کرد. همش برمیگرده به نیاز Query

3- ایجاد تعداد 30 ایندکس در یک جدول از نظر ورود اطلاعات بعدی و ایندکس سازی و ... مشکل ساز نخواهد بود
قرار شد برای ایجاد ایندکس، به تعداد فیلدهامون کاری نداشته باشیم، به Query نگاه میکنیم!

4- آیا به نظر شما استفاده از Full Text Search میتواند گزینه بهتری باشد و از نظر عملی مشکل ساز نخواهد بود.
وقتی در یک متن حجیم دنبال یک لغت میگردیم، FTS بهترین گزینه است

http://www.barnamenevis.org/forum/viewtopic.php?t=11870
http://www.barnamenevis.org/forum/viewtopic.php?t=16912
http://www.barnamenevis.org/forum/viewtopic.php?t=14455
http://www.barnamenevis.org/forum/viewtopic.php?t=21874