ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: zerohate ที่ 16 มกราคม 2009, 19:57:49



หัวข้อ: query ข้อมูลเยอะ ยังไงให้เร็วครับ
เริ่มหัวข้อโดย: zerohate ที่ 16 มกราคม 2009, 19:57:49
มีข้อมูลในดาต้าเบสเยอะมากๆ ประมาณ 1 แสน record ได้ครับ แต่ละ record มีชื่อฟิลล์ id, title, detail

ผมอยากจะดึงข้อมูลมาโชว์หน้าละ 100 record จะเขียนโค๊ตยังไงให้ดึุงข้อมูลได้เร็วครับ เพราะตอนนี้ใช้ limit 0, 100

แต่มันค่อยข้างช้า มีวิธีอื่นแนะนำไหมครับ ขอบคุณครับ


หัวข้อ: Re: query ข้อมูลเยอะ ยังไงให้เร็วครับ
เริ่มหัวข้อโดย: Moha ที่ 16 มกราคม 2009, 22:00:19
ทำ index หรือยังครับ ช่วยได้เยอะนะครับ


หัวข้อ: Re: query ข้อมูลเยอะ ยังไงให้เร็วครับ
เริ่มหัวข้อโดย: digitalex ที่ 16 มกราคม 2009, 22:05:27
อยากรุ้เหมือนกัน   :'(


หัวข้อ: Re: query ข้อมูลเยอะ ยังไงให้เร็วครับ
เริ่มหัวข้อโดย: zerohate ที่ 16 มกราคม 2009, 22:07:33
ทำ index หรือยังครับ ช่วยได้เยอะนะครับ

ยังไมไ่ด้ทำเลยครับ พอจะแนะนำวิธีได้ไหมครับ

ผมลองหาอ่านในเน็ต มันมีแต่การทำ index สำหรับข้อมูลที่เป็นการ where ก็เลย กำลัง งง วิธีอยู่ครับ


หัวข้อ: Re: query ข้อมูลเยอะ ยังไงให้เร็วครับ
เริ่มหัวข้อโดย: lopata ที่ 16 มกราคม 2009, 22:14:34
ตามคุณ moha เลย
  โดยทั่วไป indexing ช่วยได้เยอะ สำหรับ table ที่มีข้อมูลมากกว่าหลักพันขึ้นไป
  ลองดูว่า table นั้นมี index อะไรบ้างใช้ mysql> show index from table_name;

  ต้องถามว่า paging นั้น ใช้เงื่อนไขอะไรในการแบ่งหน้า เพื่อใช้เป็น where cause ได้อีก

  ตัวอย่าง id  สามารถใช้แบ่ง page ซึ่งสมมุติว่า id มีคุณสมบัติ
    - auto_increment
    - เป็น primary key => ซึ่งมันจะมี index โดย default อยู่แล้ว

  อันนี้คงต้องปรับ query ให้มี where id between start_row and end_row
 แทน limit start,offset เดิม

พอเป็นข้อมูลครับ


หัวข้อ: Re: query ข้อมูลเยอะ ยังไงให้เร็วครับ
เริ่มหัวข้อโดย: figaro ที่ 16 มกราคม 2009, 22:22:34
มีวิธีอื่นเช่นทำเป็น xml หรือไม่ก็ cache query


หัวข้อ: Re: query ข้อมูลเยอะ ยังไงให้เร็วครับ
เริ่มหัวข้อโดย: lowprofile ที่ 16 มกราคม 2009, 23:27:31
ลองทำ index ก่อนเถอะครับ วิธีอื่นค่อยว่ากัน ถ้าหลังจากทำแล้วยังช้าอยู่

ถ้ายังไม่ไหวค่อยศึกษาเรื่อง Cache ( ADODB Cache หรือ Pear Cache_Lite ก็ได้ )
และถ้ายังช้าอีกคงมีอะไรผิดปกติแล้วแหละครับ