Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

แบบสอบถาม MySQL เพื่อเลือก n แถวบนสุดอย่างมีประสิทธิภาพ?


ใช้ดัชนีเพื่อเลือกแถวบนสุดอย่างมีประสิทธิภาพ ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable (StudentName varchar(100), StudentScore int );Query OK, 0 แถวได้รับผลกระทบ (0.66 วินาที)

ตัวอย่าง

แทรกระเบียนบางส่วนในตารางโดยใช้คำสั่ง insert -

mysql> แทรกลงในค่า DemoTable ('John',34); Query OK, 1 แถวได้รับผลกระทบ (0.19 วินาที)mysql> แทรกลงในค่า DemoTable ('Carol',55); Query OK, 1 แถวได้รับผลกระทบ (0.15 วินาที )mysql> แทรกลงในค่า DemoTable ('Bob',58); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงในค่า DemoTable ('Sam', 38); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที) mysql> แทรกลงในค่า DemoTable ('Mike',48); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า DemoTable ('Adam', 41); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที) mysql> แทรก ลงในค่า DemoTable ('Chris', 47); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงในค่า DemoTable ('Robert', 40); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงใน DemoTable values('David',89);แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.18 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select -

mysql> เลือก *จาก DemoTable;

ผลลัพธ์

<ก่อนหน้า>+-------------+--------------+| ชื่อนักเรียน | StudentScore |+-------------+--------------------+| จอห์น | 34 || แครอล | 55 || บ๊อบ | 58 || แซม | 38 || ไมค์ | 48 || อดัม | 41 || คริส | 47 || โรเบิร์ต | 40 || เดวิด | 89 |+-------------+-------------+9 แถวในชุด (0.00 วินาที)

ตัวอย่าง

ต่อไปนี้เป็นแบบสอบถามเพื่อเลือกแถวบนสุดอย่างมีประสิทธิภาพ เราใช้ ORDER BY และข้ามไป 5 แถว หลังจากข้ามไป จะมองเห็น 3 รายการ เนื่องจากเราใช้ LIMIT 3 ไปแล้ว −

mysql> แก้ไขตาราง DemoTable ADD INDEX name_score(StudentName,StudentScore);Query OK, 0 แถวได้รับผลกระทบ (0.61 วินาที)Records:0 Duplicates:0 Warnings:0mysql> select StudentName,StudentScore from DemoTable order by StudentScore LIMIT 5,3;

ผลลัพธ์

<ก่อนหน้า>+-------------+--------------+| ชื่อนักเรียน | StudentScore |+-------------+--------------------+| ไมค์ | 48 || แครอล | 55 || บ๊อบ | 58 |+-------------+-------------+3 แถวในชุด (0.00 วินาที)