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

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

ThaiSEOBoard.comพัฒนาเว็บไซต์Programming[php]ระหว่างการเพิ่ม row กับ colum อันไหน query ช้ากว่ากัน
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: [php]ระหว่างการเพิ่ม row กับ colum อันไหน query ช้ากว่ากัน  (อ่าน 1283 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
GillBate
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,236



ดูรายละเอียด
« เมื่อ: 18 เมษายน 2010, 06:09:14 »

ผมกำลังจะทำระบบ battle report รายการการต่อสู้ที่เขาไม่ได้เป็นคนเริ่ม(คนที่ถูกตีนั่นเอง)
ปัญหาคือการออกแบบฐานข้อมูล ผมไม่รู้ว่าอันไหนดีกว่ากัน เลยมาขอคำแนะนำจากทุกท่านครับ

แบบแรกเป็นการเพิ่ม colum
id | defender | report_1 | repoert_2 | ... | report_n
ใน report จะเป็นลักษณะนี้  ->  เวลา*ผู้โจมตี*รายงานการต่อสู้ จากนั้นก็มา explode เอา

หรือ
id | defender | time_1 | report_1 | ... | time_n | report_n
แยกเวลาออกมาเพื่อให้ง่ายต่อการลบข้อความ หรือแยก attacker ออกมาด้วยเลย

แบบที่สองเป็นการเพิ่ม row
id | defender | attacker | time | report

สมมติว่าผมมีผู้เล่น 1000 คน แต่ละคนสามารถโจมตีได้ 100 ครั้งต่อวัน
นั่นหมายความว่า report จะเกิดขึ้นทั้งหมด 100,000 reports โดยที่ระยะเวลาในการลบตัวเอง(ถ้าเขาไม่ลบ)คือ 48 ชั่วโมง

ถ้าแบบแรกคือเพิ่ม colum จำนวนแถวจะเป็น 1000 ส่วนจำนวน colum ก็แล้วแต่
แต่ถ้าแบบที่สอง นั่นหมายความว่า จะต้องมีจำนวนข้อมูล 200,000 แถวโดยประมาณ

เรียนถามว่า แบบไหนถึงจะดีครับ Tongue(ไม่ไ้ด้เรียนเรื่องฐานข้อมูลมา ออกแบบไม่ดีตายแน่)
ถ้าเป็นแบบแรก การแยก colum กับการมา explode ทีหลัง อันไหนจะดีกว่ากันครับ
บันทึกการเข้า
Twenty-One
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 11,767



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 18 เมษายน 2010, 09:36:34 »

เพิ่ม row น่าจะไวกว่านะครับ เพราะเพิ่ม column มันเป็นการแก้โครงสร้างนิครับ
แต่ถ้าออกแบบๆ เพิ่ม row แล้วมีข้อมูล 200,000 row ผมว่าเพิ่ม column ก็ดีนะถ้าจำแนวแถวมันน้อยกว่านั้น
บันทึกการเข้า

# บริการโฮสติ้งขั้นเทพ 24/7 เปิดให้บริการ web hosting มาแล้ว 14 ปี ลูกค้ากว่า 40,000 ราย ให้ความไว้วางใจ
# hosting คุณภาพสูง ดูแลระบบโดย system engineer ประสบการณ์สูง
# host เร็ง แรง ไม่มีล่ม ติดตั้ง cms ฟรี
# vps ราคาถูก 50GB 999 บาท

witthaya_pock
Newbie
*

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

กระทู้: 46



ดูรายละเอียด
« ตอบ #2 เมื่อ: 18 เมษายน 2010, 10:23:13 »

ตอนแรกอ่านๆ ก็นึกไปถึงฐานข้อมูลพวก MySQL แต่จากที่ดูแล้ว น่าจะเป็น TextFile มากกว่า ผมไม่ค่อยชำนาญแบบ TextFile ซะด้วย

ความคิดเห็นส่วนตัวนะครับ

ถ้าเป็น MySQL ใช้แบบที่สอง และสร้าง Index ให้กับตารางด้วย
ถ้าเป็น TextFile ใช้แบบที่หนึ่งก็น่าจะเวิร์กกว่า แต่ถ้าขอมูลเป็นเยอะขนาดนี้ สร้าง Textfile ของแต่ละ defender แยกกันจะดีกว่าไหมเอ่ย
บันทึกการเข้า

บริการออกแบบและจัดทำเว็บไซต์
GillBate
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,236



ดูรายละเอียด
« ตอบ #3 เมื่อ: 18 เมษายน 2010, 11:38:55 »

ตอนแรกอ่านๆ ก็นึกไปถึงฐานข้อมูลพวก MySQL แต่จากที่ดูแล้ว น่าจะเป็น TextFile มากกว่า ผมไม่ค่อยชำนาญแบบ TextFile ซะด้วย

ความคิดเห็นส่วนตัวนะครับ

ถ้าเป็น MySQL ใช้แบบที่สอง และสร้าง Index ให้กับตารางด้วย
ถ้าเป็น TextFile ใช้แบบที่หนึ่งก็น่าจะเวิร์กกว่า แต่ถ้าขอมูลเป็นเยอะขนาดนี้ สร้าง Textfile ของแต่ละ defender แยกกันจะดีกว่าไหมเอ่ย

 :Pขออภัย มันเป็น MySql ครับ
บันทึกการเข้า
tamiyalagu
คนรักเสียว
*

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

กระทู้: 191



ดูรายละเอียด
« ตอบ #4 เมื่อ: 18 เมษายน 2010, 14:31:53 »

เก็บเป็น array แล้วยัดไปใน column เดียวกันให้หมด
ใช้ serialize ยัดข้อมูลลงไปก็ได้ เวลาจะใช้ ก็ unserialize ออกมา มันก็จะเป็น array
บันทึกการเข้า
witthaya_pock
Newbie
*

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

กระทู้: 46



ดูรายละเอียด
« ตอบ #5 เมื่อ: 18 เมษายน 2010, 15:48:03 »

เก็บเป็น array แล้วยัดไปใน column เดียวกันให้หมด
ใช้ serialize ยัดข้อมูลลงไปก็ได้ เวลาจะใช้ ก็ unserialize ออกมา มันก็จะเป็น array
ไอเดียดีนะครับ  wanwan013
บันทึกการเข้า

บริการออกแบบและจัดทำเว็บไซต์
GillBate
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,236



ดูรายละเอียด
« ตอบ #6 เมื่อ: 18 เมษายน 2010, 15:50:20 »

เก็บเป็น array แล้วยัดไปใน column เดียวกันให้หมด
ใช้ serialize ยัดข้อมูลลงไปก็ได้ เวลาจะใช้ ก็ unserialize ออกมา มันก็จะเป็น array
ไอเดียดีนะครับ  wanwan013

 Tongue ครับไอเดียดี แต่งง ไม่รู้ทำยังไง
บันทึกการเข้า
tamiyalagu
คนรักเสียว
*

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

กระทู้: 191



ดูรายละเอียด
« ตอบ #7 เมื่อ: 18 เมษายน 2010, 16:22:48 »

ก็ปกติคุณเก็ทำแบบนี้อยู่แล้ว
$time,$name,$report
เวลาใช้งานก็ explode ด้วย , ก็จะได้มาเป็นค่าของแต่ละตัว

หลักการก็เหมือนเดิม แต่เพิ่มข้อมูลเข้าไปเป็นชุดๆ
$time,$name,$report|$time,$name,$report|$time,$name,$report
เวลาใช้งานก็ explode ด้วย | ก่อน แล้วก็เอาไป explode ด้วย , อีกที

แต่แนะนำให้ใช้ฟังชั่น serialize มันจะง่ายกว่า explode หลายๆที


แต่ถ้าจะต้องเลือกระหว่าง เพิ่ม colum กับ เพิ่ม row
เพิ่ม row ดีกว่าครับ
บันทึกการเข้า
GillBate
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,236



ดูรายละเอียด
« ตอบ #8 เมื่อ: 18 เมษายน 2010, 16:38:25 »

 wanwan017 ขอบคุณทุกความเห็นครับ เด๋วจะลองดู
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์