อยากสอบถามเกี่ยวกับการเขียน index ใน query ครับ(หามาสองวันแล้วเจอที่ต้องการแต่ก็ไม่ค่อยเข้าใจการทำงานลองทำแล้วก็ error)
คือผมต้องการทำ index ที่ table แต่ไม่อยากสร้าง index ที่ table เลยอยากให้ ทำการ index เฉพาะเวลา เรา query เรียกหาเท่านั้น
เหตุผมที่ไม่อยากสร้าง index ที่ db เลย คือ db ที่ผมใช้อยู่มันเป็นของโปรแกรมอื่น ผมแค่ไปเรียกข้อมูลมาใช้เลยไม่อยากไปทำอะไรกับ table ตัวนั้นแค่อยากให้เวลาเรียกใช้ค่อย index table ที่ต้องการผมไปเจอมากจากเว็บนึงแต่ไม่ค่อยเข้าใจ
If you find that SQL Server uses a TABLE SCAN instead of an INDEX SEEK when you use an IN or OR clause as part of your WHERE clause, even when those columns are covered by an index, consider using an index hint to force the Query Optimizer to use the index.
For example:
SELECT * FROM tblTaskProcesses WHERE nextprocess = 1 AND processid IN (8,32,45)
takes about 3 seconds, while:
SELECT * FROM tblTaskProcesses (INDEX = IX_ProcessID) WHERE nextprocess = 1 AND processid IN (8,32,45)
returns in under a second. [7.0, 2000]Updated 6-21-2004 Contributed by David Ames
ใครพอทราบช่วยหน่อยครับ ผมมีการ join ข้อมูลประมาณนี้ครับต้องการแทรก index ลงไปใน query ชุดนี้ต้องทำอยากไรบ้างครับ
select hd.docustatus from emcust c left join soinvhd hd on c.custid=hd.custid left join soinvdt dt on hd.soinvid=dt.soinvid left join emgood good on dt.goodid=good.goodid left join emgoodunit unit on dt.goodunitid2=unit.goodunitid where c.custcode='3067029'
SELECT * FROM tblTaskProcesses (INDEX = IX_ProcessID) WHERE nextprocess = 1 AND processid IN (8,32,45)
ไอ้แบบนี้ แปลว่า มี Index ชื่อ IX_ProcessID ใน Database แล้วครับ
ไม่ได้แปลว่า สร้าง Index ตอน Query
บางครั้งในตาราง มีการสร้าง INDEX มากกว่า 1 ตัว
การระบุ INDEX เป็นการบอกให้ Server ใช้ INDEX ตัวดังกล่าวสำหรับ Query