PDA

View Full Version : سرعت اجرای کوئری در جدولی با تعداد ستون بالا



amir_monster1
چهارشنبه 16 بهمن 1392, 19:19 عصر
با درود
یک سوال ابتدایی :

یک جدول با تعداد Column بالا مثلا در حدود 40 ستون مشکلی در سرعت اجرای کوئری ها ایجاد نمی کنه ؟

یا بهتر است این 40 Column را در چند جدول تقسیم کنیم؟
که البته یکم دردسر کد نویسیش هم بیشتر میشه برای اجرای کوئری در بین چند جدول


و فرض بر اینکه بیش از 50 هزار رکورد اطلاعات را دریافت کنه

Mousavmousab
شنبه 19 بهمن 1392, 15:18 عصر
سلام

مطمئناٌ 40 تا ستون برای یک Table کار مناسبی نیست. بسته به اینکه شما توی Query هاتون چند تا فیلد را بر می گردانید سرعت متفاوت است.ولی بهتر است شما به چندین جدول تبدیل کنید.
البته نباید از دور نسخه پیچید.

amir_monster1
دوشنبه 21 بهمن 1392, 11:48 صبح
سلام

مطمئناٌ 40 تا ستون برای یک Table کار مناسبی نیست. بسته به اینکه شما توی Query هاتون چند تا فیلد را بر می گردانید سرعت متفاوت است.ولی بهتر است شما به چندین جدول تبدیل کنید.
البته نباید از دور نسخه پیچید.

مثلا اگر من 3 فیلد را بخوام در کوئری درخواست کنم آیا همه فیلد های اون جدول مانیتور نمیشه یا خوانده بشه ؟

M aJi D
جمعه 25 بهمن 1392, 13:14 عصر
مثلا اگر من 3 فیلد را بخوام در کوئری درخواست کنم آیا همه فیلد های اون جدول مانیتور نمیشه یا خوانده بشه ؟

با سلام.
در خصوص جدا سازی فیلدها در جداول مختلف به این نکته توجه داشته باشید که همیشه خرد کردن فیلدها در جداول مختلف خوب نیست زیرا در زمان ثبت و جستجو بین چند جدول کار می کند اما بسته به نوع فیلدها به طور کلی می توان اینگونه گفت فیلدهایی با مقادیر انتخابی ( دین، جنسیت و....) بهتر است در جداول مختلف باشد.

در خصوص مانیتور کردن تمام فیلدها تا جایی که می دانم شاید هم درست نباشه اما SQL در زمان جستجو در یک جدول از آنجا که دستورات را از انتها به ابتدا می خواند اول جدول را لود می نماید بعد شرط را روی آن پیاده می نماید و سپس ستونها پس همه ی رکوردهای جدول و همه ی ستونهایشان را می بیند اما فقط در آن ستونی که شرط شما آمده شرط را جستجو می کند و فقط آن ستونهایی را که شما می خواهید نمایش می دهد.البته اگر از full text استفاده نمایید می توانید مشخص نمایید یک عبارت در تمام فیلدها جستجو شود و فکر کنم اگر از view استفاده نمایید دیگر این اتفاق نمی افتد و فقط ستونهای مورد نظر شما جستجو می شود .
اگر برای شما سرعت در زمان جستجو مهم است راجع به ایندکس گذاری و پارتیشنینگ یک جستجویی بکنید بعد نیست .

موفق باشید

حمیدرضاصادقیان
جمعه 02 اسفند 1392, 00:40 صبح
سلام.
اگر حجم جداول شما زیاد نیست نیازی به تفکیک داده ها نیست و میتوان با بررسی دقیق Query های نوشته شده به سرعت مطلوب رسید.
اگر حجم داده ها زیاد هست بهتره مقادیری که احساس میکنید میتونن درون یک جدول دیگه باشند و تغییری نمیکنند رو به جدول دومی منتقل کنید.

amir_monster1
جمعه 02 اسفند 1392, 19:07 عصر
خیلی ممنونم از پاسختون
اما راستش من دقیق نمیدونم چه حجمی از داده ها برای دیتابیس باعث کند شدن سرعت درخواست میشه
برای مثال یک دوستی می گفت حتی یک میلیون رکورد در یک جدول به شرط اینکه از نوع Full text نباشه مشکلی در سرعت ایجاد نمی کنه !

من یک جدول دارم با حدود 40 ستون یا همان فیلد که قرار اطلاعات حدود 50 هزار کاربر در اون قرار بگیره
یعنی 50 هزار رکورد

نوع دیتا هم اکثرا از نوع Nvarchar و نهایت nvarchar 200

آیا میشه گفت این جدول حجم داده زیادی داره ؟؟

حمیدرضاصادقیان
جمعه 02 اسفند 1392, 21:10 عصر
خیر. کاربرد FTS چیز دیگریست و صرفا برای حجمهای بالا نمیشه ازش استفاده کرد.
1 میلیون رکورد اصلا جز حجمهای بالا حساب نمیاد.
منظورم بالای 20 میلیون رکورد هست.
50 هزار رکورد هیچ مشکلی برای کار شما ایجاد نخواهد کرد.
فقط اینکه آیا از لحاظ قوانین نرمال سازی ، مطمئن هستید که جدول شما کاملا نرمال طراحی شده است؟؟