SQL
Обязательно ли делать первичный ключ (id колонку) в таблице mysql, если каждое значение и так будет уникальным?
Вопрос детский, но все же хотел бы узнать ответ, а то у меня много пробелов в в знаниях
Нет делать не обязательно но рекомендуется для того чтобы сам движок мускуля мог нормально работать с этой таблицей например искать записи и т д, а твои уникальные значения он не понимает потосучто они не помечаны как primary key
С точки зрения эффективности работы базы - нужно.
Если значения уникальны, ты можешь использовать из в качестве первичного ключа. Но если в дальнейшем понадобится что-то изменить, это может вызвать проблемы. Так что отдельная колонка для первичного ключа, никак не связанного с основным содержимым записей - это наиболее универсальный способ.
Но если ты не создашь первичный ключ, он всё равно будет создан - неявно. Так что обратиться к нему ты не сможешь. Потому лучше всегда создавать явный первичный ключ.
Но если ты не создашь первичный ключ, он всё равно будет создан - неявно. Так что обратиться к нему ты не сможешь. Потому лучше всегда создавать явный первичный ключ.
Это зависит от назначения таблицы и объема данных, которые планируется в ней содержать. Без первичного ключа не будет производиться индексация данных - будут медленнее производиться выборки данных, но ускорится вставка новых данных. К тому же, не будет избыточности данных.
И если у тебя в таблице хранится список категорий, в котором 5-10 записей, то индексация никакого прироста не принесет.
Например, для таблиц с логами индексация может даже навредить, так как скоростью выборки из логов зачастую можно пожертвовать, а вот скоростью записи - нельзя. И под таблицу с несколькими десятками миллионов записей может быстро исчерпаться свободное место на жестком диске, так как помимо самих логов приличный объем занимают индексы.
И если у тебя в таблице хранится список категорий, в котором 5-10 записей, то индексация никакого прироста не принесет.
Например, для таблиц с логами индексация может даже навредить, так как скоростью выборки из логов зачастую можно пожертвовать, а вот скоростью записи - нельзя. И под таблицу с несколькими десятками миллионов записей может быстро исчерпаться свободное место на жестком диске, так как помимо самих логов приличный объем занимают индексы.
лучше сделай
Похожие вопросы
- Вопрос по SQL - уникальное поле ID для трёх таблиц (нельзя вставить значения в одну, если оно есть в другой таблице).
- Под каким пользователем нужно работать в MySQL?
- MySQL Truncate/Delete - как это работает?
- Почему так нужен mysql?
- Можно ли связать одно поле таблицы с несколькими полями другой таблицы?
- Друзья пожалуйста скажите любой бесплатный хостинг чтобы работал и поддерживал PHP + MySQL.
- Не отрабатывает вложенный MySQL запрос
- SQL. Есть таблица а и b как мне поставить ограничение на поле таблицы b, на основании поля таблицы a? пример в описании
- Как связать две таблицы между собой?
- Как в одной записи таблицы хранить несколько полей одного типа (не фиксированное число)?