Привет! У меня есть php-сайт, использующий mysql, и у меня есть таблица со столбцом под названием «Имя».
Я намерен иметь следующие функции:
- Это должен быть тип varchar (N), как и обычные имена.
- Может быть длинным, но никогда не должно содержать так называемых «описаний», так как это находится в другом поле, которое мне не нужно искать. (возможно, в будущем, которое я мог бы просто положить в другую таблицу)
- Он ДОЛЖЕН быть уникальным и доступным для поиска, что делает его подходящим кандидатом в качестве первичного ключа.
- Поиск - это простой тип, который подойдет только для поведения, подобного ключевому слову mysql LIKE%.
- Эта таблица (очень) часто читается, новые строки вставляются время от времени, строки удаляются / обновляются очень редко.
- Многие другие таблицы ссылаются на значения в этой таблице, в идеале я хочу иметь ограничения внешнего ключа для других таблиц, что приводит меня к желанию использовать InnoDB.
У меня вопрос: использовать ли MyISAM или InnoDB для этой таблицы? Также можно ли использовать мой не очень длинный varchar в качестве первичного ключа, учитывая частоту чтения / объем используемой памяти / количество предупреждений в Интернете о первичных ключах varchar?
Но я бы действительно хотел извлечь выгоду из ограничений внешнего ключа, которые предлагает InnoDB, или я должен просто беспокоиться об этом на уровне php?
В частности, меня беспокоит возможность полнотекстового поиска в MyISAM. Я пытался прочитать официальные веб-страницы mysql, чтобы понять, для чего это нужно, но не смог понять достаточно, чтобы судить, будет ли от этого полезна моя ситуация.