PDA

View Full Version : سوال: مشکل در Select رکوردهای زیاد



Mahmoodhashemian
چهارشنبه 08 آذر 1396, 12:54 عصر
با سلام
یک برنامه نوشتم که روزانه چیزی حدوده 2 تا 3 هزار رکورد به صورت خود کار به برنامه اضافه میشود و باید بگم Table های زیادی هم دارم که سلکت ها و اینسرت ها و آپدیت های مختلفی دارم
مشکلم از اونجایی شروع میشه که تعداد رکورد های یکی از Table ها به 100000 میرسه و نرم افزار به شدت کند میشه تا جایی که دیگه نمیشه باهاش کار کرد
من از دیتا ست استفاده می کنم و دیتا بیس SQL
کسی راه حلی برای این مشکل داره؟
من خودم سعی کردن Query هامو به صورتAsync اجرا کنم اما جواب مطلوبی نگرفتم
در ضمن هنوز بین اینکه Query ها رو توی DataSet ایجاد کنم یا توی stored procedure نتونستم تصمیم درستی بگیرم اگر لطف کنید بهترین روش پیشنهاد بدین ممنون میشم

محمد آشتیانی
چهارشنبه 08 آذر 1396, 16:35 عصر
سلام
این تعداد رکورد اصلا زیاد نیست ، بیشتر برای Sql Server شبیه شوخیه حتی
من فکر میکنم نحوه طراحی دیتابیس شما مشکل داره که در این حد برنامتون کند کار میکنه ، البته مسائل دیگری هم مطرح هستند ، مثل اینکه شما اساسا چه نیازی به واکشی تعداد زیاد رکورد در یک زمان دارید ، و اگر چنین نیازی بصورت قطعی وجود داره ، روشتون چیه؟
یا مثلا باید بدونید وقتی نتیجه یک کوئری Select رو با Order by مرتب می کنید ، این باعث افزایش زمان اجرای کوئری شما میشه
در کل مباحث زیادی هست که ممکنه علت این حد از کندی باشه و نمیشه یک نسخه کلی براش پیچید

Mahmoodhashemian
پنج شنبه 09 آذر 1396, 10:28 صبح
ممنون از پاسختون
متوجه منظورتون هستم چون زمان اجرای Query در SQL و VB متفاوته من خودم کمی به دیتا ست مشکوکم اما هنوز روشهای دیگرو امتحان نکردم
فکر می کنید اجرای Query به صورت Async کمکی بهم بکنه؟
و همونطور که فرمودین از شروط زیادی برای Select ها استفاده کردم

Mahmoodhashemian
پنج شنبه 09 آذر 1396, 10:30 صبح
سلام
این تعداد رکورد اصلا زیاد نیست ، بیشتر برای Sql Server شبیه شوخیه حتی
من فکر میکنم نحوه طراحی دیتابیس شما مشکل داره که در این حد برنامتون کند کار میکنه ، البته مسائل دیگری هم مطرح هستند ، مثل اینکه شما اساسا چه نیازی به واکشی تعداد زیاد رکورد در یک زمان دارید ، و اگر چنین نیازی بصورت قطعی وجود داره ، روشتون چیه؟
یا مثلا باید بدونید وقتی نتیجه یک کوئری Select رو با Order by مرتب می کنید ، این باعث افزایش زمان اجرای کوئری شما میشه
در کل مباحث زیادی هست که ممکنه علت این حد از کندی باشه و نمیشه یک نسخه کلی براش پیچید

ممنون از پاسختون
متوجه منظورتون هستم چون زمان اجرای Query در SQL و VB متفاوته من خودم کمی به دیتا ست مشکوکم اما هنوز روشهای دیگرو امتحان نکردم
فکر می کنید اجرای Query به صورت Async کمکی بهم بکنه؟
و همونطور که فرمودین از شروط زیادی برای Select ها استفاده کردم

hamidrezax1
پنج شنبه 09 آذر 1396, 17:21 عصر
دوست عزیز رکورد ها رو از کجا و نحوه اینزرت و آپدیتتون رو توضیح بدین.مثلا از اکسل میگیرین از کاربر میگیرین از sql میگیرین
با ارایه توضیحات دوستان میتونن راهنمایی های بهتری ارایه بدن
موفق باشید

ahmad.t1100
پنج شنبه 09 آذر 1396, 19:25 عصر
این رو ببین
http://forum.soitip.org/panel/showpost.aspx?cod=6#8

Mahmoodhashemian
جمعه 10 آذر 1396, 10:07 صبح
دوست عزیز رکورد ها رو از کجا و نحوه اینزرت و آپدیتتون رو توضیح بدین.مثلا از اکسل میگیرین از کاربر میگیرین از sql میگیرین
با ارایه توضیحات دوستان میتونن راهنمایی های بهتری ارایه بدن
موفق باشید
اطلاعاتی توسط کاربر وارد نمیشه بلکه به صورت خودکار توسط چند Device از طریق بستر های Serial و TCP Port وارد می شود

توسعه و فن آوری نیک مهر
شنبه 11 آذر 1396, 13:57 عصر
اگه تو واکشی اطلاعات مشکلی دارین به نظر من به جای اجرای اسکریپت روی SQL از Store Procedure‌استفاده کنید. اینطوری میتونید داپما اون رو بهینه کنید و سرعتش رو چک کنید. بعد از اینکه پروسیجر اجرا شد نرم افزار اگه پردازش رو نداشته باشه باید بتونید راحت و سریع توی گرید نمایشش بدین.