برگرداندن یک رکورد در اس کیو ال ؟
سلام.
کد زیر رو ببینید.
int[] num = { 10, 20, 30, 40, 12, 14, 15}; int Result = num[3]; // 40
تو این کد خیلی راحت محتوای خونه 3 رو برگردوند.با بهترین زمان.
حالا همچین دستوری هست توی اس کیو ال که بتونه مستقیم بره سره رکورد مورد نظر.
id رکورد مورد نظرمو دارم.جچوری تو اس کیو ال مستقیم برم رو همون رکورد؟
8 پاسخ
ممنون.تشکر فراوآن
سلام دوست عزیز، شما باید رو جدولی که مد نظرتون هست کوئری بزنید:
using(var connection = new SqlConnection("data source=.; Initial Catalog=DbName; integrated security=sspi;"); { var command = new SqlCommand("select * from [TableName] where id = @id",connection); command.Parameters.add(new SqlParameter("id",5)); var reader = command.ExecuteReader(); }
تو کوئری بالا رکوردی با شناسه 5 از جدول TableName برگردونده میشه، TableName رو با نام جدولتون جایگزین کنید، DbName رو هم با نام جدولتون جایگزین کنید.
یعنی چی مستقیم بره رو اون رکورد؟ شما برای گرفتن یک رکورد باید رو جدول کوئری بزنید، در هر صورت SQL دنبال رکورد شما میگرده و تو بهترین زمان هم برای شما این کار رو انجام میده. شما یه رکورد را واکشی می کنید، یا تغییرات روش انجام میدید یا اینکه نمایش میدید اطلاعات رو، دقیقاً قصد دارید جه کاری انجام بدید؟
خیالتون راحت، ساختار ایندکس ها تو SQL Server که مبتنی بر B-Tree هست با سریع ترین روش ممکن داده ها رو بدست میاره، فقط ایندکس رو حتماً بر اساس کوئری ای که میزنید ایجاد کنید، چون ایندکس اشتباه بعضی وقت ها باعث کندی کوئری ها میشه.
یه سرویس دارم،چند تا هم کلاینت،تعداد رکورد ها هم زیاده.هر کلاینت برای ثبت اطلاعاتش مجبوره کوئری بزنه رو sql و طبق یسری شرایط دادهاشو ثبت یا ویرایش کنه.
من اون شرایطو در آوردم و بعنوان حافظه مشترک بین تمام کلاینتام دارم که توی سرویسم هست wcf.
کلاینت درخواست ثبتو میده به سرویس،سرویس با جستجو به روش درخت ترای که سرعتش تو این کار من بسیار بالاست رکورد مورد نظرمو پیدا میکنه من اون رکوردو دارم نیازی ندارم باز کوئری بزنم به اس کیو ال و اون بگرده میون این همه داده و باز اون رکورده پیدا کنه.یجور دسترسی مستقیم به اون رکورد میخوام.به نظر شما شدنیه؟
ببینید، اگر شما بر اساس Primary Key کوئری بزنید تو رکورد های تعداد بالا هم مشکلی براتون پیش نمیاد، چون SQL Server یک ساختار کش پیش فرض داره و داده هایی که کوئری گرفته میشه رو داخل حافظه Cache میکنه، شما هر چقدر هم تعداد رکورد هاتون زیاد باشه بهتره که از ساختار خود SQL استفاده کنید برای کوئری گرفتن و مطمئن باشید که مشکلی براتون پیش نمیاد، فقط حتماً از ستونی که Primary Key هست استفاده کنید یا اگر از ستون غیر کلید استفاده می کنید حتماً براش ایندکس ایجاد کنید.
ممنون از پاسختون.
اون شرایطی که باید چک بشه مربوط به ستون Primary Key نیست.
ولی اینجوری که شما فرمودین، میتونم با ساختار خودم Primary Key رو بدست بیارم و بعد کوئری اس کیو ال بزنم.
ترکیبی کار کنم . بنظرتون جواب میده؟
ولی این درخت ترای خیلی سریعه.
بطور مثال بین یک میلیار داده تو بهترین حالت یک حرکت تو بدترین حالت 7 حرکت به نتیجه میرسه .
میخوام مستقیم برم رو اون رکورد.شدنیه؟
اینجوری بلاخره اس کیو ال داره دنبال اون رکورد میگرده.