مشکل کند بودن کویری Select Max در SQL Server
من توی SQL Server یک ستون دارم به اسم Number از نوع عددی
برای هر بار درج رکورد جدید یک شماره جدید باید برای این رکورد که کلید اصلیش Number هست بدم (دارای INDEX نیز هست)
مثال : یک مشتری جدید به نام محمد محمدی با این فلان شماره تلفن درج شود => و حالا اول شماره جدید برای این رکورد بگیر :
SELECT MAX(NUMBER+1) FROM Mytable
و این رکورد رو با این شماره جدید درج کن .
مشکل این کویری اینه که کمتر از یک ثانیه عمل میکنه و مشکلی نداره ولی به صورت نگهانی یک دفعه خیلی کند عمل میکنه به طوری که 11 ثانیه اجرای این کویری طول میکشه
نکته اینه که سرور درگیر نیست فقط یک یوزر که خودم هستم داره استفاده میکنه و اینکه گاهی این دستور کند میشه
مشخصات سرور :
CPU : Core i7
RAM : 8GB DDR4
HDD : 1.5 TB
SQL Server 2014 Enterprise
به شکل های دیگه ای هم امتحان کردم ولی این ها هم فرقی ندارن :
SELECT MAX(CAST(NUMBER+1 AS float)) FROM MyTable
SELECT MAX(NUMBER) FROM MyTable
WHERE NUMBER< 1000000000
SELECT MAX(NUMBER) FROM MyTable
SELECT NUMBER FROM MyTable ORDER BY NUMBER DESC
لطفا در خصوص حل این مشکل راهنمایی بفرمایید
باتشکر
خب چرا شما فیلد Number رو به صورت Identity توی Sql Server ایجاد نمی کنید؟ در این صورت به صورت اتوماتیک مقدارش 1 واحد افزایش پیدا می کنه و نیازی به هیچ دستوری هم ندارید.
اما اگر در مجموع نمی خواید که از آیدنتیتی استفاده کنید میتونید کوئری خودتون رو به این صورت بنویسید.
Select Top 1 Number From Table Order By Number Desc
دستور بالا فقط یک رکورد بر می گردونه و نباید سرعت رو بیاره پایین. اگر باز هم مشکل سرعت دارید ممکنه ایندکس گذاری که روی این جدول انجام دادید اشتباه باشه. چون ایندکس گذاری اشتباه نه تنها باعث بهینه شدن سرعت کوئری نمیشه بلکه باعث خراب شدن سرعت کوئری هم میشه.
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- حذف کامل یک رکورد در جدول ریلیشن شده
- مقایسه ساختار دو دیتابیس در Sql Server
- اشکال در ایجاد کلید خارجی در Sql Server
- تفاوت اوراکل و Sql Server چیست
- رفع خطا در مایگریشن - Specify ON DELETE NO ACTION or ON UPDATE NO ACTION
- جابه جایی سطر و ستون در Sql Server
- استفاده از Stored Procedure در انتیتی فریم ورک code First
- آپدیت لیستی از رکوردها در Sql Server - آپدیت گروهی اطلاعات در Sql Server
- دلیل پرش 1000 تایی خودکار فیلد identity در Sql server
- مشکل نمایش ندادن Data Type موقع تایپ در Sql Server