В чем разница между использованием и неиспользованием BTREE в инструкции MySQL ‘CREATE TABLE’?

#mysql #indexing #mysql-workbench #create-table #b-tree

#mysql #индексирование #mysql-workbench #create-table #b-дерево

Вопрос:

Я новичок в SQL, я хочу создать таблицу, я вижу пример:

 DROP TABLE IF EXISTS `aaa`;
CREATE TABLE `aaa` (
`date` datetime DEFAULT NULL,
`id` varchar(200) DEFAULT NULL,
...
`source` varchar(200) DEFAULT NULL,
KEY `idx1` (`source`),
KEY `idx2` (`id`,`date`) USING BTREE,
KEY `idx3` (`date`) USING BTREE
) ENGINE=MyISAM
 

Я читал в Интернете, USING BTREE но все еще немного смущен, почему idx1 у него нет и idx2 , idx3 есть USING BTREE ? В чем разница и цель? В чем преимущество его использования? Спасибо.

Ответ №1:

Никакой разницы, кроме синтаксиса.

  • По умолчанию BTree .
  • Если вы ничего не скажете или даже если скажете HASH , оно будет автоматически преобразовано в BTree .

По сути, BTree — хороший, универсальный механизм индексирования.

  • Поиск определенной строки («точечный запрос») выполняется очень быстро. Например: WHERE x = 123
  • Сканирование «диапазона» или строк очень эффективно. Например: WHERE x BETWEEN 333 AND 444 (Контраст: очень медленно для ХЭША.)

ПОЛНОТЕКСТОВЫЙ и ПРОСТРАНСТВЕННЫЙ, при желании, требуют явной спецификации.

Вам действительно следует перейти с MyISAM на InnoDB.

Смотрите Википедию: MyISAM использует B-дерево; InnoDB использует B дерево.