SQL Tuning หรือ SQL Optimization Query Part Only

บทความเกี่ยวกับ : SQL Tuning หรือ SQL Optimization Query Part Only


SQL  Tuning หรือ SQL Optimization Query Part Only

เห่อ สร้างหัวข้อซะ อินเตอร์ วันนี้เด็ดครับ เอาของดีมาฝาก
ผมว่าเพื่อนๆ Developer ทุกคนถ้าจับงานใหญ่ๆ เล่นกับ Data เยอะๆ ต้องเจอปัญหานี้แน่นอน
Query ข้อมูลไม่ขึ้นว่ะ หรือ กำ Query แล้วค้าง แงๆๆ ทำไงดี

วันนี้ห้ามพลาดครับกับไม้เด็ดในการ Tuning Query ให้เร็วขั้นเทพ
เทคนิคง่ายๆ ผมเคยโพสไปแล้ว จะไม่กล่าวถึงนะครับ วันนี้เอาแบบมือโปร เท่านั้น หุหุ
โม้ซะเยอะ เริ่มกันเลยดีกว่า

1. Query ด้วยการระบุ field ให้ชัดเจนเร็วกว่าแน่นอน 
    แม้จะไม่ค่อยเห็นผลใน 1 query
    แต่คิดดูถ้าคุณ query ซัก สิบล้านรอบมันจะมีผลแค่ใหน หุหุ

     select  f1,f2,f3  from my_table
     เร็วกว่า
     select * from my_table
    ฟันธง

2. ใช้ Select ซ้อน Select ให้ฉลาด ๆ ในบางเคส ยกตัวอย่างเช่น
    
     select f1,f2,f3  from my_table where
          (f1,f2) = (select max(f1),max(f2) from my_table)
      เร็วกว่า
     select f1,f2,f3  from my_table where
          f1 = (select max(f1) from my_table)
          and f2 = (select max(f2) from my_table)
     ฟันธง

3. ใช้ EXISTS เร็วกว่า IN แน่นอน
     ยกตัวอย่างอันนี้ผมใช้ใน Oracle นะครับ
    select f1,f2,f3 from my_table where
    exists (select 1 from dual where f1=1 or f1=2 or f1=3)
    เร็วกว่า

    select f1,f2,f3 from my_table where
    f1 in (1,2,3)
    ฟันธง

4. ใช้ UNION ALL เร็วกว่า UNION 
   แต่ก็อย่างว่าแหละบางทีมันก็จำเป็นต้องใช้ UNION อ่ะเพราะต้องการข้อมูลที่มันไม่ซ้ำ ชิมิ
   ก็ดูเป็นกรณีไปครับเช่นถ้าเรารู้อยู่แล้วข้อมูลไม่มีทางซ้ำแน่ๆ ก็แนะนำให้ใช้ UNION ALL ครับเร็ว
   กว่าแน่นอน

เพิ่มเติม กรณีที่ผมใช้ใน  Oracle นะครับ

    - f1 like 'cat%'   เร็วกว่า substr(f1,1,3)='cat'
    - f1 between 1 and 10000  เร็วกว่า f1>=1 and f1<=10000
    - f1='x' and f2='y' เร็วกว่า f1||f2='xy'
    - f1 < 20000 เร็วกว่า  f1+10000<30000
    - f1 exists (select 1 from dual where f1 in (1,2,3,4,5,6,7,8,9,10))
      เร็วกว่า f1 in (1,2,3,4,5,6,7,8,9,10)




โพสต์ยอดนิยมจากบล็อกนี้

Oracle date format จัด format date ให้แสดง พศ และ เดือน ภาษาไทยหรือตามภาษาที่เราเลือก

java -Xms , java -Xmx กำหมด memory ให้ JVM เพื่อป้องกันปัญหา Out of Memory

Java this กับ super การใช้งานคำสั่ง this กับ super ใน ภาษา Java