Tutorial for Application Development



Tuesday 28 December 2010

การ Query บน Oracle แบบ บังคับให้ใช้ Index

การ Query บน Oracle แบบ บังคับให้ใช้ Index
บางครั้งที่เรามีการ Query แบบที่ไม่ได้ใส่ชื่อ Field ลงไปด้วย ทำให้ลำบากในการ Query ครับ
ดังนั้น เพื่อให้เกิดผลดีต่อการใช้ Index เราต้องมีการบังคับกันด้วย ตามนี้ตรับ

select /*+ INDEX(emp_city idx_job_code) */ empname,
job_code from emp where job_code = 'T';

ใส่ชื่อ Index ลงไปได้เลย ทีนี้ รับรองเร็วพรวดๆ

การสร้าง Index บน Oracle บน Field Date Time ให้เร็ว

การสร้าง Index บน Oracle บน Field Date Time ให้เร็ว

บางครั้งการสร้าง Index เราควรต้องดูรายละเอียด ซักนิดนึงผมเองเคยเจอปัญหากับ Field
ที่เป็น Date Time ถึงแม้จะทำการสร้าง Index ไว้แล้วก็ตามแต่ ถ้าเราต้องการ Query ตามวันที่เท่านั้นไม่สนใจเวลา จะทำให้ไม่สามารถใช้ Index ตัวนั้นได้ แนวทางแก้ไขนะครับ ก็จัดไปเลย Index ยังไงก็ได้ ตามที่เราต้องการ เช่น ถ้าต้องการ Query แค่วันที่ ก็ใส่แบบนี้ได้ครับ

CREATE INDEX IDX_TEST ON TEST_TBL
(
TO_CHAR(FIELD_DATE_TIME, 'DDMMYY')
);


ตอน Query เราก็ทำการ Query ให้ตรงตาทรูปแบบที่เรา Index ไว้ เช่น

select * from TEST_TBL where
TO_CHAR(FIELD_DATE_TIME)='010810';


เพียงเท่านี้แหละครับก็จะทำให้ เราสามารถ Query ได้เร็วแบบติดจรวดไปเลย