where concat_ws('-',year,month,day) between '2011/05/21' and '2011/06/15/'
แบบนี้มันจะสามารถค้นหาได้เหมือน field วันที่ปกติทั่วไป แต่วันมันจะไม่ใช้ index เลย เนื่องจากมันต้องใช้ฟังชันมารวมฟิลทั้ง 3 อันทั้งตารางก่อน ซึ่งตารางผมมีประมาณ 3 ล้านกว่า record มันจะช้ามาก
ถ้าใช้เป็นแบบ
where
year = '2011'
and month between 05 and 06
and day between 21 and 15
แบบนี้ก็เกือบจะได้แล้วครับ แถมใช้ index ด้วย แต่เห็นมั้ยครับ ตรง
day between 21 and 15
ค้นหาตั้งแต่วันที่ 21 ถึง 15 ซึ่งมันผิดตรรกะ ครับ ก็เลยค้นหาไม่ได้ เลขทางซ้ายต้องน้อยกว่าทางขวา
ใครพอรู้มั้งครับ ว่า table โครงสร้างแบบนี้จะค้นหายังไง ปวดหัวจริงๆ