Поиск по первичному ключу типа INT быстрее, чем TEXT?

Решаю задачу получения строки из таблицы, соответствующей текущему запрошенному урлу.

На ум приходят два варианта (тут немаловажно с т.ч.зрения SEO-ЧПУ), чисто для примера:

  1. Первый вариант: урл:

site.ru/catalog/249-smartfon-samsung-galaxy-s20

Выдираем из урла 249 и находим запись в таблице по ключу типа INT:

CREATE TABLE `tbl1` (
        `id` INT(9) UNSIGNED NOT NULL AUTO_INCREMENT,
        ...
        PRIMARY KEY (`id`) USING BTREE,
    ) ENGINE=InnoDB;
    SELECT * FROM `tbl1` WHERE id=249;
  1. Второй вариант (числовой id в урл отсутствует):

site.ru/catalog/smartfon-samsung-galaxy-s20

CREATE TABLE `tbl2` (
    `id` TEXT NOT NULL,
    ...
    PRIMARY KEY (`id`(100)) USING BTREE
) ENGINE=InnoDB;
SELECT * FROM `tbl2` WHERE id='smartfon-samsung-galaxy-s20';
  • тут можно и первичным ключом сделать текстовое поле и вторичным.

Вопрос: Намного ли быстрее будет поиск в первом варианте при прочих равных условиях, или примерно одинаково, если пренебречь размером индексов?


Ответы (0 шт):