Dokumen mengatakan bahwa:
Kebanyakan indeks MySQL (PRIMARY KEY, UNIQUE, INDEX, dan FULLTEXT) disimpan di B-tree.
Jadi secara fisik datanya sudah diurutkan berdasarkan kuncinya. Saya memerlukan skema nilai kunci di MySQL dengan dukungan kueri rentang:
SELECT key, value FROM MyTable WHERE key >= key1 and key < key2;
Dalam banyak contoh (mayoritas) di web saya melihat orang menambahkan ORDER BY
bahkan ketika memilih berdasarkan kunci utama.
Pertanyaan saya:
- Apakah ORDER BY benar-benar diperlukan di sini agar hasilnya selalu terurut, dan jika ya - mengapa?
- Apakah penyortiran akan memengaruhi kinerja atau akan dioptimalkan?
- Apakah masuk akal untuk menjadikan nilai sebagai bagian dari indeks komposit jika nilainya tidak terlalu besar, misalnya. hanya angka?
- Akankah
SELECT key, value FROM MyTable WHERE key > key1 LIMIT 1;
mengembalikan kunci berikutnya yang lebih besar dari kunci1, atau kunci apa pun yang lebih besar dari kunci1? Bagaimana cara mendapatkan pertanyaan titik LT,LE,GT,GE dengan andal?
(Saya membutuhkannya di MySQL karena alasan 'politik' dan perkakas sebelum pindah ke penyimpanan KV berbasis B+-tree lain yang ada, saya sudah memilih LMDB terbaik, jadi pertanyaannya hanya tentang mengejek skema di MySQL)