Являются ли столбцы, которые не являются индексами, отсортированы на диске вместе с индексом в MySQL, в MyISAM и InnoDB?
Неправильная мысль, которую я начал писать:
Я думаю, что, вероятно, нет, так как они не проиндексированы; если бы они были отсортированы, это означало бы, что они являются индексами.
Это не правильно, потому что каждый столбец индекса отсортирован по порядку собственного содержимого, но я спрашиваю о порядке упорядочения каждой строки (или только некоторых столбцов) с соответствующим индексом.
Чтобы пояснить, я говорю: это было бы полезно сделать выбор диапазонов строк, которые стоят рядом, вместе по своим индексам, быстрее. Например, если я хочу select * where id >1000 and id<2000
(могут быть ошибки в синтаксисе MySQL, я не очень хорошо это знаю), тогда сам столбец id можно быстро прочитать с диска, поскольку, вероятно, его ячейки от 1000 до 2000 остаются вместе на физическом диске. , Но другой контент столбца, соответствующий идентификатору 1000-2000, может быть записан в разных местах на физическом диске. Если они также отсортированы, они будут читаться быстрее. Я думаю, возможно MySQL автоматически сортирует эти столбцы на физическом диске для выполнения таких операций.
Они сортируются в других типах баз данных (PostgreSQL и т. Д.)?
27 декабря. Я вижу из двух ответов, что в случае кластерного индекса / первичного ключа сами простые строки не сортируются на физическом диске (как я думал, это может / может быть), и даже кластерный индекс не отсортировано, если это b-дерево, я прочитал о b-дереве и вижу, что его узлы, как я понимаю, остаются в произвольных местах на диске.
источник