ผมอยากสอบถามเพื่อนๆ เรือ่งการสร้าง INDEX สำหรับ TABLE ใน MYSQL หนอ่ยครับว่ามันควรทำอย่างไรใน เคสนี้
ผมอยากสอบถามเพื่อนๆ เรือ่งการสร้าง INDEX สำหรับ TABLE ใน MYSQL หนอ่ยครับว่ามันควรทำอย่างไรใน เคสนี้
ผมมี Table A
ผมเขียน API Return ค่าให้ลูกค้า โดยใช้ Table A อันเดียว โดยมีเงือ่นไขดังนี้
Table นี้มีข้อมูลประมาณ 700,000 Rows
ลูกค้าสามารถส่งค่า $parameter request = AccountId, CampaignId, ChannelId, Phone, StartDate, EndDate, Status มา
โดย Table A มี ประมาณ 30 Field แล้วก็มี Field AccountId, CampaignId, ChannelId, Phone, Date, Status พวกนี้อยู่ด้วย
AccountID มีข้อมูลไม่เกิน 500 ที่ไม่ซ้ำกัน
CampaignID มีข้อมูลไม่เกิน 1500 ที่ไม่ซ้ำกัน
ChannelID มีข้อมูลไม่เกิน 6000 ที่ไม่ซ้ำกัน
Phone อาจจะมีข้อมูลเยอะมากที่ไม่ซ้ำกันเลย
Date นี้อาจจะไม่ซ้ำกันเลย 700,000 rows
Status มีข้อมูลไม่เกิน 2 ค่า
โดยผมเขียนให้ Where เรื่อยๆ หากมีการส่งตัวแปร AccountId, CampaignId, ChannelId, Phone, StartDate, EndDate, Status
โดยหากไม่ได้ส่งตัวแปรมาก็จะไม่มีการ Where ครับ
ผมควรสร้าง Index ให้ Table นี้อย่างไรดีหรอครับ ให้มันเพิ่มความเร็วในการ Select ได้Tag : PHP, MySQL
ประวัติการแก้ไข 2019-04-10 15:33:22
Date :
2019-04-10 15:29:23
By :
nut_ch31
View :
831
Reply :
7
สร้าง ทุกฟีลด์ ที่ใช้ค้นหา
Date :
2019-04-11 14:39:26
By :
Chaidhanan
แบบมาตรฐาน คือ 1 : 1
แต่ถ้าจะให้ดีที่สุด
ต้องทำ index ทั้ง เดี่ยว และ กลุ่ม
ถ้าไม่กลัวเปลือง พื้นที่ สร้าง index ก็ตามนี้เลย หรือจะเลือกเอา ตามที่จำเป็น
1 + 2 + 3 + 4 + 5 ถ้ามี 1 และ มี 2 3 4 5
1 + 2 + 3 + 5 ถ้ามี 1 และ 2 3 5
1 + 2 + 4 + 5
1 + 2 + 5
1 + 3 + 4 + 5
1 + 3 + 5
1 + 4 + 5
1 + 5
1 ถ้ามีแค่ 1
----------------------------
2 + 3 + 4 + 5
2 + 3 + 5
2 + 4 + 5
2 + 5
2
---------------------------
3 + 5
3
---------------------------
4 + 5
4
---------------------------
5
ประวัติการแก้ไข 2019-04-11 16:51:06
Date :
2019-04-11 16:03:26
By :
Chaidhanan
ขอบคุณมากครับ
ตอนแรกผมนึกว่าผมต้องสร้าง 1 index ต่อหลายๆ ฟิวอะไรแบบนี้
ผมเลยไม่รู้ว่าจะต้องทำอย่างไร
เดี่ยวผมสร้าง 1 index ต่อ 1 field ครับ
Date :
2019-04-11 16:30:10
By :
nut_ch31
กลับไปอ่าน คห 3 ใหม่นะครับ มีแก้ไข
Date :
2019-04-11 16:52:20
By :
Chaidhanan
แปลว่าถ้าสร้าง index ตามกลุ่ม แล้ว where เท่านั้นตามกลุ่มที่สร้างพอดี นั้นคือ รวดเร็วที่สุดเลย สิน่ะครับ แต่ก็จะเปลืองพื้นที่ตาม
แต่อย่างแย่สุดก็สร้าง index 1 ตัว ต่อ 1 field ให้ มา 5 index ก็พอ ไรงี้หรอคับ
Date :
2019-04-11 22:34:02
By :
nut_ch31
Load balance : Server 03