พอดีมีข้อมูลเยอะมากต้องจัดการ มีโจทย์คือ ต้องแบ่งข้อมูลมาจัดการโดยการใช้ group by จากการลองผิดลองถูก(มือใหม่แถมพื้นฐานไม่มีอีก)ดูตัวอย่างที่มีอยู่ใน google จนได้คำสั่งนี้มา
INSERT INTO TestTable select A,B from tbl_moc group by A,B limit $begin,$end ถ้าข้อมูลประมาณต่ำกว่าแสนจะเร็ว แต่เกินล้านจะช้ามาก เลยสงสัยว่าจากคำสั่ง มันจะ select แล้วgroup by ข้อมูลทั้งหมดก่อนหรือเปล่าแล้วถึงมา limit มันถึงช้ามาก ใช่หรือเปล่า ถ้าใช่ก็ผิดจุดประสงค์ที่ต้องการ จำกัดจำนวนข้อมูลก่อนแล้วมา group by อยากขอคำแนะนำหรือตัวอย่างเพื่อแก้ไข หวังว่าคงได้รับคำแนะนำด้วยนะครับ
มี index fileld A,B หรือเปล่าครับ ถ้า ไม่มี index A,B ก็จะอ่านจนหมดครับ ขณะอ่านก็จะทำ temp index สำหรับ group by ไปด้วย
แต่ถ้ามี index ก็จะใช้ index ซึ่งจะเร็วกว่ากันมากครับ แต่่ช่วงการทำ index ก็จะต้องรอ ซักพักล่ะครับ ถ้า reccord เป็นจำนวนล้าน
การสร้าง index สำหรับข้อมูลจำนวนมาก ก็ต้องคำนึงถึงการใช้งานด้วยครับ ว่ามีการเรียกใช้ index มากน้อยขนาดไหน
หรือนานๆ ทำหน ทำงานเร็วขึ้นเฉพาะอย่างแต่ทำให้การทำงานโดยรวมช้า ก็ไม่เหมาะที่จะทำ index นะครับ
ขอบคุณครับที่ให้ข้อมูล แต่ถ้าเรา select ข้อมูลที่เราต้องการใช้ 2 ฟิลด์ มากใส่ array แล้วมากจัดการต่างๆ ก่อน(group by )เราค่อย insert ลงตาราง จะเร็วกว่าหรือเปล่า อยากขอดูตัวอย่างการ group by array หน่อยครับ ตอนนี้มึนไปไม่ค่อยเป็น
เช่น ตาราง X Y
a 1
a 1
b 1
b 2
a 2
c 3
เป็น X Y V
a 1 2
b 1 1
b 2 1
a 2 1
c 3 1 ประมาณว่าถ้าค่าในฟิลด์ 2 ฟิลด์ เหมือนกันให้ตัดเหลือแค่หนึ่ง แล้วใส่ค่าเท่ากับจำนวนที่ซ้ำกันครับ ตอนนี้ทำได้แค่เอาค่าในฟิลด์ 2 ฟิลด์ ใส่ใน array 2 array แล้วเหลือตอน group by ยังมืนอยู่ ขอตัวอย่างหน่อยครับ ขอบคุณล่วงหน้าครับ