ขอคำแนะนำการค้นหา search หลาย fields หน่อยครับ เนื่องจาก มีจำนวนประมาณ 30 fields .....
เอาอันที่สำคัญ ก็พอครับ ไม่จำเป็ต้อง search ได้ทุก field
รึจะทำก็ได้นะ ^^
Date :
2012-09-06 15:55:59
By :
Krungsri
เอาพวกชื่อ วันที่ ประเภทไรพวกนี้หละ สำคัญๆๆ
Date :
2012-09-06 16:02:41
By :
sambrazil
ยิ่งเงื่อนไขเยอะ มันก็ยิ่งช้าน่ะครับ
Date :
2012-09-06 16:14:45
By :
mr.win
ถ้าข้อมูลในแต่ละฟิลดิ์มีความยาวไม่มากนัก... ลองแบ่งกลุ่มฟิลดิ์ที่ไกล้เคียงกัน เป็นชุดๆ แล้วนำแต่ละชุดมา CONCAT กัน
โดยที่พยายามแบ่งให้น้อยที่สุดเท่าที่จะทำได้ เช่น 3 กลุ่ม เช่น
Code
WHERE
CONCAT(field1,'|',field2, '|', field3, '|', field4) LIKE '%string_search%' OR
CONCAT(field5,'|',field6, '|', field7, '|', field8) LIKE '%string_search%' OR
CONCAT(field9,'|',field10, '|', field11, '|', field12) LIKE '%string_search%'
............. ต่อได้อีกเรื่อยๆ........
ถ้าจำนวนฟิลดิ์ไม่มากเท่าใดนักก็ไม่ต้อง CONCAT ก็ได้นะครับ ที่ใส่เครื่องหมาย '|'
ก็เผื่อว่าบางทีข้อมูลที่เชื่อมต่อกันอาจจะเชื่อมเข้าหากันแล้วดันได้คำที่ตรงกับคำค้นพอดี
แนะนำว่า ถ้าไม่จำเป็นก็ไม่ควรจะค้นหาได้หลายๆฟิลดิ์แบบนี้ในครั้งเดียวนะครับ ถ้าระบบใหญ่ขึ้นจะมีปัญหา
เพราะฉะนั้น เวลาเขียน app ก็ควรจะแบ่งหน้าสำหรับค้นหาให้เป็นหมวดหมู่แยกกัน..
แต่ถ้่าจำเป็นแบบนี้ก็ทดสอบโดยคำนึงถึงปริมาณข้อมูลในอนาคตด้วยว่ามีมากน้อยเพียงใด
Date :
2012-09-06 16:25:55
By :
Songkram
ไม่ควร concat ครับ ทำให้ช้าลง เพราะต้องนำข้อมูลมาคำนวนใหม่
เขียนแบบปกติ ระบบ database สามารถ optimize ให้ตามความเหมาะสมครับ
Date :
2012-09-07 20:52:50
By :
:)
ขอบคุณทุกความคิดเห็นครับ
Date :
2012-09-10 07:46:29
By :
nattkhanesha
Load balance : Server 00