PDA

View Full Version : سوال: جستجو سریع



khorsandreza
یک شنبه 29 شهریور 1388, 18:30 عصر
سلام
دوستان سریعترین روش چستجوی در پایگاه داده اس کیو سرور چیست؟
دستور Locate در اطلاعات زیاد خیلی کند عمل میکند .
لازم به توضیح است جستجوی من بر روی فیلدی است pk میباشد با استفاده از نسخه 4.12 SqlDirct مشکلی نداشتم ولی برای جائی برنامه نویسی میشه اصرار دارد فقط از کامپوننت های خود دلفی استفاده شود و کامپوننت اضافه نشود و برای این کار از DBExpress استفاده کردم

DlphIran
دوشنبه 30 شهریور 1388, 13:57 عصر
دوست عزيز ،‌سرعت جستجو بجز استفاده از دستور مناسب به ايندكس گذاري مناسب هم مربوط ميشه

دستور اصلي جستجو در اس كيو ال ( select _ where-like ) هست كه البته قبلش بهتره براي سرعت بيشتر جستجو ،‌فيلد مورد نظر رو ايندكس گذاري كني تا خيلي سريعتر به جواب برسي.

khorsandreza
دوشنبه 30 شهریور 1388, 23:29 عصر
تمام ابن موارد را مطلع هستم من جدولی دارم که اطلاعات پرسنل هست حال کاربر میخواهد با استفاده از کلید های PgUp و PgDn بین رکورد ها حرکت کند و با استفاده از یک فرم جستجو بتواند بر اساس فزضا شماره پرسنلی جستجو کند و دقیقا بر اساس شماره پرسنلی اندیکس شده پس نمی توانم هر بار عملیات select را انجام دهم البته ado نسبت به بقیه روش های اتصال به دیتا بس سریعتر است ولی من روشی فاکس ارائه کرده بود از دستوری seek که خیلی سریع است را میخواهم شبیه سازی بشه

hadisalahi2
دوشنبه 06 مهر 1388, 16:16 عصر
میشه بفرمایید چرا نمیشه از دستور Select استفاده کرد؟ برای کار با بانک های اطلاعاتی دستورات SQL سریعترین ، قویترین و ساده ترین دستورات هستند.

khorsandreza
پنج شنبه 09 مهر 1388, 14:58 عصر
میشه بفرمایید چرا نمیشه از دستور Select استفاده کرد؟ برای کار با بانک های اطلاعاتی دستورات SQL سریعترین ، قویترین و ساده ترین دستورات هستند.
وقتی یک Select انجام دادیم که حاوی مثلا 200000 رکورد هست حال میخواهیم بر روی این جدول دو کار انجام دهیم
1 - با استفاده از گلید های PgUp و PgDn بین رکورد ها حرکت کنیم
2 - با وارد کردن شمار پرسنلی بتوانیم سریع آن رکور را پیدا کنیم
اگر من بر اساس Select که شما می فرمائید انجام دهم فقط یک رکور نمایش داده میشو و عملا عملیات بند 1 انجام نمی شود

توضییح من مشکل را با گروه بندی کردن پرسنل حل کردم با 7000 رکورد یا همین حدودها مشکل حستجو حل شده
یعنی همان Locat

hadisalahi2
چهارشنبه 15 مهر 1388, 12:21 عصر
خوب بعد که عمل Select رو انجام دادید خیلی راحت میتونید با کدهای زیر بین رکوردها جابجا بشید. فقط این کد ها رو باید در رویداد OnKeyPress بگذارید.



AdoQuery1.next
AdoQuery1.Prior

khorsandreza
چهارشنبه 15 مهر 1388, 12:53 عصر
خوب بعد که عمل Select رو انجام دادید خیلی راحت میتونید با کدهای زیر بین رکوردها جابجا بشید. فقط این کد ها رو باید در رویداد OnKeyPress بگذارید.



AdoQuery1.next
AdoQuery1.Prior

دوست من وقتی Select انجام میگیره که حاوی فقط یک رکور است چظور ممکن است به رکورد قبلی و بعدی رفت ؟ :متعجب:

hadisalahi2
چهارشنبه 15 مهر 1388, 19:41 عصر
دوست من وقتی Select انجام میگیره که حاوی فقط یک رکور است چظور ممکن است به رکورد قبلی و بعدی رفت ؟ :متعجب:

منظورتون رو اصلا متوجه نمیشم.
اگه خروجی Select فقط یک رکورده ، پس چطوری میخواهید بین رکوردها جابجا بشید.
اگه میشه بیشتر در مورد سوالتون توضیح بدید.

khorsandreza
چهارشنبه 15 مهر 1388, 22:00 عصر
منظورتون رو اصلا متوجه نمیشم.
اگه خروجی Select فقط یک رکورده ، پس چطوری میخواهید بین رکوردها جابجا بشید.
اگه میشه بیشتر در مورد سوالتون توضیح بدید.
ببنید اطلاعات من حدود 500000 رکورد که شامل مشخصات فردی و این تعداد در بین استان ها توزیع شد حال من select انجام میدم مثل شکل زیر



Select * From Maindata Where ostan="0400";


اجرای دستور بالا مثلا 30000 رکور را شامل میشود من حالا میخواهم بین این 30 هزار نفر جستجوی بر حسب شماره پرسنلی انجام دهم و با استفاده از کلیدهای PgUp & PgDn بین رکوردها حرکت کنم اگر بنا بر نظر شما بخواهم دوباره بروی شماره پرسنلی Select انجام دهم فقط یک نفر را فرضا پیدا میکند دیکر امکان جرکت بین رکوردها نیست چون فقط دستور من حاوی یک رکورد هست
دستور Locate این کار را انجام می دهد و خیلی کند هست
البته من مشکل را حل کرده ام مطلب مربوط به گذشته
اگر تمایل داشتید روش حلش را در پست دیگر توضیح میدم
ممنون از نظر و لطفتان