View Full Version : index
pooyansystem
دوشنبه 03 اردیبهشت 1386, 13:09 عصر
من یه جدول دارم که تو این جدول دو تا فیلد دارم یکی برای نگهداری تاریخ و یکی برای نگهداری ساعت هردو تا فیلد ها هم از نوع Nvarchar هستند من می خوام هر چند وقت یک بار برم سراغ این جدول و سطرهایی رو که تاریخ و ساعت اونها با تاریخ و ساعت فعلی یکی است بازیابی کنم شنیدم استفاده از indexer سرعت بازیابی اطلاعات رو خیلی بالا می بره ولی تا حالا از اون استفاده نکردم در ضمن اینم بگم که این جدول باید با یه جدول دیگه join بشه اگه میشه بهم بگید چه طور روی این جدول index بذارم و از اون مهمتر چه طور اطلاعات رو از این دو تا جدول با کمک index بازیابی کنم
AminSobati
دوشنبه 03 اردیبهشت 1386, 14:45 عصر
دوست عزیزم،
ایندکس برای Query ساخته میشه. اگر Queryتون رو پست کنین، میشه ایندکس مناسب رو پیشنهاد داد
pooyansystem
سه شنبه 04 اردیبهشت 1386, 07:03 صبح
منظورتون رو متوجه نشدم آخه تو کتاب نوشته بود بر روی فیلد های جدول index می گذارند به هر حال query من به صورت زیر است
select * from zaman join tempzaman on zaman.code=tempzaman.zcode
where tempzaman.tarikh=datetime.now(shamsy) and tempzaman.saeat=datetime.now.time and zaman.vazeyat='test'
همونطور که قبلا گفتم جدول tempzaman سه تا فیلد داره یکی zcode که کلید خارجی است به جدول zaman یکی tarikh که از نوع nvarchar می باشد و تاریخ را به صورت تاریخ شمسی ذخیره می کند و یکی saeat که از نوع nvarchar است و ساعت را ذخیره می کند
ممنون میشم کمکم کنید
AminSobati
سه شنبه 04 اردیبهشت 1386, 22:41 عصر
فکر میکنم من منظورم رو درست نرسوندم: بله درسته ایندکس رو فیلدهای جدول ساخته میشه، اما برای Query! یعنی همیشه Query باید مشخص باشه تا برای افزایش سرعتش، روی فیلدها ایندکس بسازیم.
اما در مورد این Query:
1) شما از * جلوی Select استفاده کردین. آیا واقعا تمام فیلدها رو لازم دارین (از هر دو جدول)؟
2) ساختاری که در اینجا میبینم برام عجیبه، منظورتون از datetime.now.time چیه؟ در SQL Server 2005 نوشتین این Query رو؟!
pooyansystem
چهارشنبه 05 اردیبهشت 1386, 06:59 صبح
1- آیا اینکه من می خوام در select چه چیزهایی رو انتخاب کنم روی index تاثیر داره. من به تمام فیلدهای جدولم نیاز دارم البته بعضی از جاها هم فقط به یه فیلد های خاصی نیاز دارم
2-منظور من از DateTime.noe.time اینه که ساعت برابر با ساعت فعلی سیستم باشه من میدونم که این ساختار در Sql وجود نداره در واقع من می خوام این مقدار به عنوان یه پارامتر به Query داده شود
AminSobati
چهارشنبه 05 اردیبهشت 1386, 18:42 عصر
1) صد در صد!
2) اگر فرض کنیم فیلد code در جدول zaman نقش PK داشته باشه، این ایندکس ها لازمه:
create index ix1 on tempzaman(tarikh,saeat,zcode)
go
create index ix2 on tempzaman(zcode,tarikh,saeat)
pooyansystem
پنج شنبه 06 اردیبهشت 1386, 07:46 صبح
آقای ثباتی میشه یه کم درباره index توضیح بدید یا یه لینک فارسی در باره این موضوع بهم معرفی کنید چون من الان واقعا گیج شدم و نمی دونم چه طور از index استفاده کنم
AminSobati
پنج شنبه 06 اردیبهشت 1386, 10:00 صبح
دوست عزیزم مبحث ایندکسها یکی از وسیعترین و البته شیرین ترین مباحث در SQL Server هستش. من فقط میتونم پیشنهاد کنم کتاب آموزشی در موردش مطالعه کنین. در این لینک ها من زیاد توضیح دادم، شاید کمکتون کنه:
http://www.barnamenevis.org/forum/showthread.php?t=9498
http://www.barnamenevis.org/forum/showthread.php?t=37664
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.