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