มีผลเสียแน่นอนครับ เพราะ query optimizer ของ MySQL ไม่ฉลาดพอที่จะตัดสินใจได้อย่างแม่นยำว่าใช้ index แล้วจะทำให้เร็วขึ้นหรือเปล่า สำหรับข้อมูลที่มีความหลายหลายต่ำ การค้นหาใน index แล้วนำไปเทียบกับตารางจริงอาจจะช้ากว่าก็เป็นได้ครับ
วิธีดูง่ายๆ ว่าควรจะใช้ index หรือเปล่าก็เช็ค selectivity ด้วยการสั่ง
SELECT COUNT(DISTINCT column)/COUNT(column) FROM table
ยิ่งใกล้ 1 เท่าไหร่ ยิ่งควรทำ index ขึ้นเท่านั้นครับ
เวลา update หรือ insert ข้อมูลที่ใช้สร้าง index ขึ้นมา จะต้องเพิ่ม record ลงไปในตารางและเพิ่ม record เข้าไปใน index ด้วยนะครับ
ถ้า index เยอะมากจนเกินไปจะทำให้กระบวนการแบบนี้ช้าลงนะครับ
กินแรม แต่
lancaster Thu, 21/05/2009 - 20:49
กินแรม
แต่คุณทำถูกแล้วครับ
มีผลเสียแ
sirn Thu, 21/05/2009 - 21:24
มีผลเสียแน่นอนครับ เพราะ query optimizer ของ MySQL ไม่ฉลาดพอที่จะตัดสินใจได้อย่างแม่นยำว่าใช้ index แล้วจะทำให้เร็วขึ้นหรือเปล่า สำหรับข้อมูลที่มีความหลายหลายต่ำ การค้นหาใน index แล้วนำไปเทียบกับตารางจริงอาจจะช้ากว่าก็เป็นได้ครับ
วิธีดูง่ายๆ ว่าควรจะใช้ index หรือเปล่าก็เช็ค selectivity ด้วยการสั่ง
ยิ่งใกล้ 1 เท่าไหร่ ยิ่งควรทำ index ขึ้นเท่านั้นครับ
เวลา update
waiwicha Fri, 22/05/2009 - 00:41
เวลา update หรือ insert ข้อมูลที่ใช้สร้าง index ขึ้นมา จะต้องเพิ่ม record ลงไปในตารางและเพิ่ม record เข้าไปใน index ด้วยนะครับ
ถ้า index เยอะมากจนเกินไปจะทำให้กระบวนการแบบนี้ช้าลงนะครับ
ขึ้นอยู่กับว่าโดยปกติแล้วทำงานแบบไหนมากกว่ากัน
ขึ้นอยู่ก
kurosame Fri, 22/05/2009 - 18:09
ขึ้นอยู่กับวิธีใช้ข้อมูลด้วยว่าเป็น read-only / add-only / add-delete รึป่าว เพราะมีผลต่อการปรับ index ด้วยนะครับ
อีกประเด็นคือความถี่ในการอัพเดทข้อมูล ถ้า read-only เยอะๆ update นานๆครั้ง index ก็จะช่วยได้มาก แต่ในทางกลับกัน index จะทำให้เปลืองมากกว่าครับ