ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingสอบถามการทำ index mysql เพื่อเพิ่มความเร็วในการ Query ข้อมูลครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: สอบถามการทำ index mysql เพื่อเพิ่มความเร็วในการ Query ข้อมูลครับ  (อ่าน 1388 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
JumDaiDee
สมุนแก๊งเสียว
*

พลังน้ำใจ: 18
ออฟไลน์ ออฟไลน์

กระทู้: 566



ดูรายละเอียด
« เมื่อ: 04 สิงหาคม 2017, 17:10:43 »

แบบที 1 แบ่งเป็น 3 คอลัมน์ คือ year, month, day (ทำเป็น 3 index)
แบบที่ 2 แบ่งเป็น 1 คอลัมน์ คือ year-month-day

พี่ๆ ที่มีประสบการณ์ query ข้อมูลเกี่ยวกับวัน ควรใช้แบบไหนดีกว่ากันครับ
บันทึกการเข้า

สินค้าออนไลน์ https://www.shoppook.com/product | โปรแกรมออนไลน์ : https://appnon.com
chaynuwong
คนรักเสียว
*

พลังน้ำใจ: 10
ออฟไลน์ ออฟไลน์

กระทู้: 149



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 09 สิงหาคม 2017, 04:00:44 »

ผมแนะนำ แบบที่ 2 ครับ เพราะเวลา คุณ query  ทั้ง 3 คอมลัม มันต้อง มี and and  แค่คิดว่าต้องมีเงื่อนไขเยอะขึ้น มันก็ลำบากใจในการทำงานแล้วคับ
ผมเลยแนะนำ แบบที่ 2  คอลัมเดียว ครอบคลุม เฉพาะเรื่องเวลาน่ะครับ ทุกอย่างสามารถทำใน  คอลัมเดียวได้ ทั้งหมด แต่การแบ่งคอลัมเพื่อ การแยกช้อมูลที่  ที่มีการใช้งานแบบ จำกัด แบบตัวเลช  แบบตัวอักษร หรืออื่นๆ
เผลอๆ บางอย่าง ผมยังจับ ยัดเป็น json อัดไปเลย เพราะไม่มีการ  ฟอเร้นคีย์ หรือ ไพร์มาลี่คีย์ ใน ก้อนช้อมูลนั้น

 Cry Cry
บันทึกการเข้า

infamous
ก๊วนเสียว
*

พลังน้ำใจ: 14
ออฟไลน์ ออฟไลน์

กระทู้: 295



ดูรายละเอียด
« ตอบ #2 เมื่อ: 09 สิงหาคม 2017, 14:56:48 »

ถ้าให้ผมเลือก เลือกข้อที่ไม่ต้องแยกฟิลด์ครับ
แต่ถ้าต้องการดึง performance กันจริงๆ(100k rows+) ลงเก็บแบบ timestamp ดูครับ Embarrassed
เห็นผลต่างกันเยอะพอสมควร ระหว่าง string(varchar) กับ integer
โดย integer จะเร็วกว่า varchar หรือ string ครับ ในกรณี query เหมือนกัน(index เหมือนกัน)
ทั้งนี้ทั้งนั้นขึ้นอยู่กับงานของเราด้วยครับว่า เหมาะสมกับแบบไหน Tongue

ข้อดีของเก็บแบบ date/datetime format คือ ใน business logic มันไม่ต้องอะไรมากมายครับ
แต่ถ้าเป็น timestamp เราต้องมาเสียเวลา convert back to date/datetime format อีกทีครับ ซึ่งก็แล้วแต่งานด้วย

ผิดพลาดอย่างไร ต้องขออภัยด้วยครับ
บันทึกการเข้า
nscyber
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 50
ออฟไลน์ ออฟไลน์

กระทู้: 1,165



ดูรายละเอียด
« ตอบ #3 เมื่อ: 09 สิงหาคม 2017, 16:43:47 »

แบบที่ 2 ครับยิ่งซอยเยอะเวลาเรียกเงื่อนไขยิ่งเยอะ เก็บทีเดียวเรียกทีเดียว

 Embarrassed
บันทึกการเข้า
insidecom
สมุนแก๊งเสียว
*

พลังน้ำใจ: 36
ออฟไลน์ ออฟไลน์

กระทู้: 706



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 10 สิงหาคม 2017, 09:37:00 »

แนะนำอีกเสียง เก็บแบบที่ 2 format Y-m-d ครับ (date หรือ datetime ก็ได้ แต่เก็บแบบ datetime จะละเอียดกว่า Y-m-d H:i:s)
ตอนนำข้อมูลมาใช้ การจัดเรียงตามวันที่ (sort) ง่ายและเร็ว การแสดงผลอาจจะใช้ PHP Date มาจัดการครับ
แต่ถ้าจะเปลี่ยน date ไปเป็น TimeStamp  ใน PHP ให้ใช้ strtotime(date) เอาครับ
« แก้ไขครั้งสุดท้าย: 10 สิงหาคม 2017, 09:39:14 โดย insidecom » บันทึกการเข้า

buakaew
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 41
ออฟไลน์ ออฟไลน์

กระทู้: 1,365



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 10 สิงหาคม 2017, 14:54:04 »

2 ดูดีกว่า  wanwan003
บันทึกการเข้า

Affiliate ไทยจ่ายจริงกินหลายชั้นลึกหลากหลายผลิตภัณฑ์Affiliate ไทย
รีวิว คูปองฟรี Hosting ไทยและเทศรีวิว Hosting
ดูดวงออนไลน์ฟรีดูดวง
พระเครื่องออนไลน์พระเครื่อง

subport
ก๊วนเสียว
*

พลังน้ำใจ: 19
ออฟไลน์ ออฟไลน์

กระทู้: 343



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 10 สิงหาคม 2017, 20:59:31 »

แบบ 2 ครับ ช่วยลดภาระแรมได้
บันทึกการเข้า

♦ เชี่ยวชาญระบบ Wordpress เป็นพิเศษ | ปรับแต่งและออกแบบธีม |  ปรึกษาฟรี ไม่ต้องเกรงใจ ทักได้ตลอด
♦ โดย STOMS | โทร.061-569-9591
หน้า: [1]   ขึ้นบน
พิมพ์