เอกสารบอกว่า:
ดัชนี MySQL ส่วนใหญ่ (คีย์หลัก, UNIQUE, INDEX และ FULLTEXT) จะถูกจัดเก็บไว้ใน B-tree
ดังนั้นทางกายภาพแล้วข้อมูลจึงถูกจัดเรียงตามคีย์แล้ว ฉันต้องการรูปแบบคีย์-ค่าใน MySQL พร้อมรองรับการสืบค้นช่วง:
SELECT key, value FROM MyTable WHERE key >= key1 and key < key2;
ในตัวอย่างจำนวนมาก (ส่วนใหญ่) บนเว็บ ฉันเห็นว่าผู้คนเพิ่ม ORDER BY
แม้ว่าจะเลือกด้วยคีย์หลักก็ตาม
คำถามของฉัน:
- ORDER BY จำเป็นจริงๆ ไหมที่นี่เพื่อให้ได้ผลลัพธ์ที่เรียงลำดับอยู่เสมอ และถ้าใช่ - เพราะเหตุใด
- การเรียงลำดับจะส่งผลต่อประสิทธิภาพหรือจะถูกปรับให้เหมาะสมหรือไม่
- มันจะสมเหตุสมผลหรือไม่ถ้าจะทำให้ค่าเป็นส่วนหนึ่งของดัชนีคอมโพสิต หากค่าเหล่านั้นไม่ใหญ่เกินไป เช่น แค่ตัวเลขเหรอ?
SELECT key, value FROM MyTable WHERE key > key1 LIMIT 1;
จะส่งคืนคีย์ถัดไปที่มากกว่า key1 หรือคีย์ใดๆ ที่มากกว่า key1 หรือไม่ จะรับแบบสอบถามจุด LT, LE, GT, GE ได้อย่างน่าเชื่อถือได้อย่างไร
(ฉันต้องการมันใน MySQL ด้วยเหตุผล 'ทางการเมือง' และเครื่องมือก่อนที่จะย้ายไปยังที่เก็บข้อมูล KV ที่ใช้ B+-tree อื่นที่มีอยู่ ฉันได้เลือก LMDB ที่ดีที่สุดแล้ว ดังนั้นคำถามเกี่ยวกับการเยาะเย้ยโครงการใน MySQL เท่านั้น)