table scan ใช้กับ table เล็กๆ (ประมาณ 100 แถว)
ไม่มีปัญหานะครับ บางทีเร็วกว่า index ด้วยครับ แต่ถ้า table ใหญ่มากๆ จะช้าครับ
ใช่เลยครับ
ผมเลยพยายามย้ำว่า ไม่จำเป็นอย่าทำ index ครับ
ทำแต่ตัวที่จำเป็น
ไม่ต้อง table เล็กหรอกครับ table ใหญ่ถ้าทำ index มั่ว มันก็ช้า 555
ถึงมันจะหลักพัน แต่ถ้ามีการเรียกใช้น้อย ผมก็ปล่อยครับ
แล้ว data ธรรมชาติ มันจะ relate กันอยู่แล้ว แค่ทำ FK Constraints ก็ครอบคลุมกว่าครึ่งนึงของ query แล้วด้วยซ้ำ
index มันก็เหมือนดาบสองคม ไปในตัวนะ
ปรกติ ผมจะทำ index เฉพาะพวก data ที่มันโดน frequency access หรือไม่ก็ performance critical หรือไม่ก็ data มันเยอะจริงๆแล้วมีการเรียกใช้เรื่อยๆมันก็จำเป็นต้องทำ
จะว่าไป การทำ index นี่มันทั้ง ศาสตร์และศิลป์ เลยมั้ง 555 ต้องวิเคราห์ case by case ครับ
เรื่อง db ตอนนี้งงๆ มากครับทั้งในส่วนของ FK ในส่วนของการทำ index ส่วน
like '%xxx%' มีข้อแนะนำไหมครับ พอดีผมทำระบบ tag เข้ามาน่ะครับซึ่งไอ้ตัวนี้ผมเยอะมากเลยครับ
เพราะผมเอา title มา split แล้วไล่ select relate ออกมา นั่นแสดงว่าในแต่ละหน้า
ผมมีไอ้ตัวนี้ไม่ต่ำกว่า 5 แน่ สงสัยว่าช้าๆ เพราะไอ้ตัวนี้แน่เลย (ปิดไปก่อนเรียบร้อยครับ จนกว่าจะเจอวิธีที่ดีกว่านี้)
ดูแล้วผมควรเปลี่ยน engine ด้วยใช่ไหมครับเป็น innodb น่าจะดีกว่าเหรือเปล่าครับ
ก็อย่างที่บอกๆไปแหละครับ เคสทั่วไป innodb ดีกว่าอยู่แล้ว (ข้อเสียสุดๆของ myisam คือมันทำ fk constrants ไม่ได้)
ถ้าต้องการเรื่อง search แบบนั้น ต้องใช้การเก็บ + หาข้อมูลด้วยการ tokenization ครับ
ใน PHP มันจะมี Zend Lucene ถ้าใช้ composer ก็ require zendframework/zend-search มั้ง
แต้ถ้าข้อมูลเป็นภาษาไทยก็ต้องเขียน tokenizer เองครับ หรือลอง google ดู เผื่อมีคนเขียนไว้แล้ว
ไม่ก็ไปใช้ Apache Lucene ครับ น่าจะมี tokenizer ของภาษาไทยให้
แต่มันเป็น java คงต้องเขียนเป็น web service เอา