Mysql uses B+ tree for implementing indexes. Lets say my primary index is of type (name, age, city). Can someone throw some light how Mysql implements a B+ tree on these kinds of keys ?
My hunch is that it treats the whole tuple as a key and it treats it like a partial order. Eg:
(John, 24, New Jersey) < (John, 24, New York) < (John, 25, New Jersey) < (John, 25, New York)
(John, 24, New Jersey) < (John, 24, New York) < (John, 25, New Jersey) < (John, 25, New York)
Yes, that's why it is important in which order you lay out columns in a key.
The key won't be of any help if you do not look for values that can be satisfied from looking at the start of it - e.g. when you filter for age
and/or city
, but not for name
, the key can't be used. On the other hand, if you'd filter for name
only, the key would be used.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With