คำสั่ง MySQL เพื่อเรียกจำนวนระเบียนในตารางคืออะไร?
คำสั่ง MySQL เพื่อเรียกจำนวนระเบียนในตารางคืออะไร?
คำตอบ:
COUNT(1)
นี้จะเป็นวิธีที่เร็วที่สุด
เพราะไม่มีใครพูดถึงมัน:
show table status;
แสดงรายการตารางทั้งหมดพร้อมกับข้อมูลเพิ่มเติมรวมถึงแถวโดยประมาณสำหรับแต่ละตาราง นี่คือสิ่งที่ phpMyAdmin ใช้สำหรับหน้าฐานข้อมูล
ข้อมูลนี้มีอยู่ใน MySQL 4 อาจอยู่ใน MySQL 3.23 เช่นกันฐานข้อมูลสคีมาข้อมูลเป็นเวลานาน
เนื่องจากมีการลงคะแนนเสียงฉันต้องการชี้แจงว่าจำนวนที่แสดงนั้นเป็นค่าประมาณสำหรับ InnoDB และ TokuDBและเป็นสิ่งที่ถูกต้องสำหรับเครื่องมือจัดเก็บ MyISAM และ Aria (Maria)
ตามเอกสาร :
จำนวนแถว เอ็นจินการเก็บข้อมูลบางอย่างเช่น MyISAM จะเก็บจำนวนที่แน่นอน สำหรับเอนจินการเก็บข้อมูลอื่น ๆ เช่น InnoDB ค่านี้เป็นค่าประมาณและอาจแตกต่างจากค่าจริงมากถึง 40% ถึง 50% ในกรณีเช่นนี้ให้ใช้ SELECT COUNT (*) เพื่อรับจำนวนที่ถูกต้อง
วิธีนี้ยังเป็นวิธีที่เร็วที่สุดในการดูจำนวนแถวใน MySQL เพราะข้อความค้นหา:
select count(*) from table;
ทำการสแกนแบบเต็มตารางสิ่งที่อาจเป็นการดำเนินการที่แพงมากซึ่งอาจใช้เวลาหลายชั่วโมงบนเซิร์ฟเวอร์โหลดขนาดใหญ่ นอกจากนี้ยังเพิ่มดิสก์ I / O
การดำเนินการเดียวกันอาจบล็อกตารางสำหรับส่วนแทรกและอัพเดต - สิ่งนี้เกิดขึ้นเฉพาะกับเอนจินการเก็บข้อมูลที่แปลกใหม่
InnoDB และ TokuDB นั้นใช้ได้กับการล็อคตาราง แต่ต้องการการสแกนเต็มตาราง
เรามีวิธีอื่นในการค้นหาจำนวนแถวในตารางโดยไม่ต้องเรียกใช้select
แบบสอบถามในตารางนั้น
อินสแตนซ์ MySQL ทุกตัวมีฐานข้อมูล information_schema หากคุณเรียกใช้แบบสอบถามต่อไปนี้จะให้รายละเอียดที่สมบูรณ์เกี่ยวกับตารางรวมถึงจำนวนแถวโดยประมาณในตารางนั้น
select * from information_schema.TABLES where table_name = 'table_name'\G
เพียง:
SELECT COUNT(*) FROM `tablename`
select count(*) from YourTable
เพียงแค่ทำ
SELECT COUNT(*) FROM table;
คุณสามารถระบุเงื่อนไขด้วยที่ไหนหลังจากนั้น
SELECT COUNT(*) FROM table WHERE eye_color='brown';
หากคุณมีหลายเขตข้อมูลในตารางของคุณและตารางของคุณมีขนาดใหญ่จะดีกว่าอย่าใช้ *
เพราะมันโหลดเขตข้อมูลทั้งหมดลงในหน่วยความจำและการใช้ข้อมูลต่อไปนี้จะมีประสิทธิภาพดีกว่า
SELECT COUNT(1) FROM fooTable;
ตามที่กล่าวไว้โดยSantoshฉันคิดว่าแบบสอบถามนี้เหมาะสมอย่างรวดเร็วในขณะที่ไม่สืบค้นตารางทั้งหมด
ในการส่งคืนผลลัพธ์จำนวนเต็มของจำนวนเรคคอร์ดข้อมูลสำหรับtablenameเฉพาะในฐานข้อมูลเฉพาะ:
select TABLE_ROWS from information_schema.TABLES where TABLE_SCHEMA = 'database'
AND table_name='tablename';
count(*)
ด้วยการรับรู้ประสิทธิภาพ
$sql="SELECT count(*) as toplam FROM wp_postmeta WHERE meta_key='ICERIK' AND post_id=".$id;
$total = 0;
$sqls = mysql_query($sql,$conn);
if ( $sqls ) {
$total = mysql_result($sqls, 0);
};
echo "Total:".$total;`
คุณต้องใช้ count () ส่งคืนจำนวนแถวที่ตรงกับเกณฑ์ที่ระบุ
select count(*) from table_name;
หากคุณมีคีย์หลักหรือคีย์ / ดัชนีที่ไม่ซ้ำกันวิธีการที่เป็นไปได้เร็วขึ้น (ทดสอบด้วยตารางแถว 4 ล้าน)
SHOW INDEXES FROM "database.tablename" WHERE Key_Name=\"PRIMARY\"
จากนั้นรับฟิลด์ความเป็นหัวใจ (ใกล้กับทันที)
คูณด้วย 0.4s ถึง 0.0001ms
tablename