من توی 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
دستور بالا فقط یک رکورد بر می گردونه و نباید سرعت رو بیاره پایین. اگر باز هم مشکل سرعت دارید ممکنه ایندکس گذاری که روی این جدول انجام دادید اشتباه باشه. چون ایندکس گذاری اشتباه نه تنها باعث بهینه شدن سرعت کوئری نمیشه بلکه باعث خراب شدن سرعت کوئری هم میشه.
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
909
- پاسخ :
1
|
تاریخ :
1400/08/02
- ساعت :
02:35:00 PM
- بازدید :
2531
- پاسخ :
1
|
تاریخ :
1403/01/15
- ساعت :
04:12:00 PM
- بازدید :
752
- پاسخ :
2
|
تاریخ :
1403/01/06
- ساعت :
05:14:00 PM
- بازدید :
653
- پاسخ :
1
|
تاریخ :
1402/12/12
- ساعت :
03:20:00 PM
- بازدید :
509
- پاسخ :
1
|
تاریخ :
1402/10/18
- ساعت :
10:45:00 PM
- بازدید :
679
- پاسخ :
2
|
تاریخ :
1402/08/18
- ساعت :
08:43:00 AM
- بازدید :
1282
- پاسخ :
0
|
تاریخ :
1402/08/16
- ساعت :
09:45:00 PM
- بازدید :
1013
- پاسخ :
1
|
تاریخ :
1402/07/20
- ساعت :
01:34:00 PM
- بازدید :
894
- پاسخ :
1
|
تاریخ :
1402/06/27
- ساعت :
12:27:00 PM
- بازدید :
1419
- پاسخ :
2
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
370
- پاسخ :
1
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
909
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
891
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1281
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4746
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1113
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
565
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
126
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
72
- پاسخ :
0
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
300
- پاسخ :
1
|