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

164
23 апреля 2022, 02:00

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

На ум приходят два варианта (тут немаловажно с т.ч.зрения 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';
  • тут можно и первичным ключом сделать текстовое поле и вторичным.

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

READ ALSO
Рендеринг html из таблиц mysql

Рендеринг html из таблиц mysql

Задача рендерить блоки верстки беря данные из бд (mysql)

103
Связка двух таблиц

Связка двух таблиц

Я уже много дней пытаюсь связать две таблицы users и friends, вот сами таблицы и их содержимое: users id (идентификатор) остальное не важно friends id u_1(идентификатор...

118
Запрос sql с вложенным подзапросом

Запрос sql с вложенным подзапросом

Не получается правильно написать запрос, прошу помощи у знающих людей!

116
Выборка из двух таблиц в MySQL по запросу

Выборка из двух таблиц в MySQL по запросу

Нужна помощь c MySQLЕсть 2 таблицы

265