PDA

View Full Version : ساخت کوئری با استفاده از ایندکس‌های جدول



A.Farzin
شنبه 13 آبان 1385, 17:30 عصر
با سلام

فرض کنید جدولی به نام tblWorks و با ستونهای Name و Family و Hour و Salary داریم.
روی این جدول یک ایندکس به نام Hour و ایندکس دیگری هم با نام Salary ایجاد کرده‌ایم
با استفاده از دستورات SQL می‌خواهیم یک کوئری از این جدول بسازیم به شکلی که ایندکسهای تعریف شده به ساخت سریع این کوئری کمک کنند.

SELECT * FROM tblWorks WHERE Hour = 8 AND Salary = 120000

اگر برای ارتباط با پایگاه داده از ADO استفاده کرده باشیم، چگونه می‌توان ایندکسها را در فرمان بالا فعال کرده و مورد استفاده قرار داد.

Spate
شنبه 13 آبان 1385, 17:35 عصر
سلام دوست عزیز
میشه موضوع رو یخورده بشکافی ؟

A.Farzin
شنبه 13 آبان 1385, 17:51 عصر
نمی‌دانم منظورتان توضیح بیشتر کدام قسمت است
مشکل من استفاده از ایندکسهاست. کدی که در بالا نوشتم کوئری مورد نظرم را می‌سازد ولی مشکل آنجاست که به دلیل حجیم بودن جدول تولید کوئری حدود 5 ثانیه طول می‌کشد.
از طرف دیگر، می‌دانبم که یکی از دلایل ایجاد ایندکس روی جدولها و ویوها سرعت دادن به امر جستجوهاست. من هم ایندکسهایم را تعریف کرده‌ام ولی نمی‌دانم چگونه آنها را در دستور فوق استفاده کنم.
همین

yavari
یک شنبه 14 آبان 1385, 20:56 عصر
سلام

میشه بدونم بانک اطلاعاتیتون چیه و تیبلتون چند تا رکورد داره ؟

ممنون

A.Farzin
دوشنبه 15 آبان 1385, 18:33 عصر
جدولی که در اینجا نام برده‌ام یک مثال است. ولی جدول اصلی من حدود 24 فیلد و حدود هشتصدهزار رکورد دارد. این جدول را هم در اکسس و هم در اس کیو ال سرور 2000 در حال بررسی دارم. براساس هرکدام که راحتید جواب بدهید ممنون می‌شوم.
توضیح بیشتر:
گاهی اوقات نیاز دارم تا از این جدول چندین رکوردست متفاوت در دسترس داشته باشم. وقتی این رکوردستها ساخته می‌شود، ری‌کوئری آنها زمان زیادی می‌برد. (حدود 5 تا 7 ثانیه).
من نیاز دارم تا در ساخت کوئری‌ها از انیدکس استفاده کنم تا این زمان کاهش یابد.
ممنون

davood110
سه شنبه 16 آبان 1385, 08:54 صبح
سلام دوست عزیز
اگه من درست متوجه شده باشم :
شما احتیاجی به فعال کردن index نداری مثلا اگه در SQL داری کار می کنی و 2 تا index را ساختی هنگامی که query می زنی خود بانک به جای اینکه برای جستجو برای هر رکورد کل فیلدهای رکوردت را لود کنه فقط فیلدهایی که توی index مشخص کردی را لود و جستجو می کنه و پس از پیدا کردن با استفاده از اشاره گرهایی که ساخته رکوردهای مورد نظر را بازیابی می کنه(این که گفتم کار index در بانک اطلاعاتی به صورت خیلی خلاصه بود) و در نتیجه احتیاجی به فعال کردن نیست و با وجود index سرعت افزایش می یابد.

A.Farzin
سه شنبه 16 آبان 1385, 17:43 عصر
با سلام
خیلی ممنون
جالب بود. پس اگر در جدول، چندین ایندکس هم داشته باشیم، باز هم کنترل اینکه استفاده از کدامشان برای این جستجو و یا کوئری مناسب است بر عهده SQL و یا Access خواهد بود. با این وجود، این امر مستلزم آن است که پایگاه داده کلید جستجوی ما را با کلیدهای کلیه ایندکسها تطبیق دهد تا ابتدا ایندکس مناسب را پیدا کند و وقتی که ایندکس را پیدا کرد آنگاه رکوردهائی که با کلید خواسته شده مطابقت دارند را انتخاب نماید.
من در گذشته با FoxPro کار می‌کردم و در آنجا باید قبل از استفاده از ایندکس به پایگاه داده می‌گفتیم که قصد استفاده از کدام ایندکس یا کدام تگ یک ایندکس را دارم، این فکر در ذهنم ایجاد شده بود که چگونه باید ایندکس را فعال کنم.
در هر حال از پاسختان سپاسگزارم.