รหัส แบบ +1 ไปเรื่อยจนเจอค่าที่หายไป แล้วเพิ่มค่าที่หายไป
ขอดูโค้ดหน่อยครับ
Date :
2009-09-28 18:20:56
By :
DownsTream
Code (PHP)
//ตัวอย่างข้อมูล 2 3 4 5 ,ID=1 ว่างอยู่
$sql = "select ID from Table";
$obj = mysql_query($sql);
$tmp=0;
while($rs = mysql_fetch_array($obj))
{
if($rs[0]-$tmp==1) //เช็คว่าเลขถัดไป ลบค่า $tmp ไม่เกิน 1 หรือ 1-0 =1
{
$tmp = $rs[0]; //เก็บไว้ที่ $tmp เพื่อเช็คต่อไป
}
elseif($rs[0]-$tmp>1) //เช็คว่าเลขถัดไป ลบค่า $tmp เกิน 1 หรือ 2-0 =2
{
$tmp = $tmp+1; //ให้ค่า $tmp เพิ่มไปอีก 1 จาก 0+1 =1 แสดงว่า 1 เป็นค่าว่าง
break; //หยุด Loop
}
}
echo $tmp;
ลองดูก่อนนะครับ แต่ผมว่าแบบนี้มันเสียเวลาในการ ประมวลผลครับ ถ้ามีข้อมูล ตั้งแต่ 10,000 เรคคอร์ด ขึ้นไป เค้าก็ไม่นิยมมาเช็คทีละ record ครับ
Date :
2009-09-28 18:40:14
By :
extenser
แนวคิดผมตอนนี้เสนอ 2 วิธี
1. ตอนเวลาที่คุณจะ add คุณต้องวิ่งไล่ดูว่า จาก 1 ขึ้นไป ว่าเลขใหนหายไป ถ้าเจอเลขที่หายไปค่อย add
2. เพิ่มตาราง ที่เก็บเลขที่คุณลบ เวลาจะเพิ่มข้อมูล ก็ get ค่าที่น้อยที่สุดจากตารางที่สร้าง และมา add ลงตารางใหญ่ แล้วอย่าลืมลบเลขที่คุณได้ออกจากตารางเล็กด้วยนะครับ
จริงๆ ในการออกแบบฐานข้อมูลควรหลีกเลี่ยงวิธีการที่จะต้องวิ่งไปวิ่งมานะครับ ถ้าไม่จำเป็นต้องมีจริงๆ เช่นพวก คิวต่าง ๆ
Date :
2009-09-28 18:50:49
By :
Sek-Artdrinker
ขอบคุณสำหรับคำแนะนำ จาก ทุกๆ ท่านมากน่ะครับ
เยี่ยมจริงๆ
Date :
2009-09-29 00:26:22
By :
oasiis
+1 พี่หนุ่มครับ คนบ้าอะไรเก่งชิบเป๋ง..
Date :
2009-09-29 00:30:26
By :
plakrim
สำหรับผมผมแยกอีกอันเลยครับ
id id_news titlle body
เวลาเรียกใช้งานผมเรียกผ่าน id primary ส่วนการจัดเรียง ผมใช้ id_news จะสั่งให้มันจัดเรียงยังไงก็ให้มันอัปเดตเอา
ไม่อยากไปยุ่งกะมัน
Date :
2009-09-29 05:00:13
By :
deawx
สุดยอดครับ
Date :
2009-09-29 07:49:52
By :
taobsd
Load balance : Server 03