Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Серия вопросов по индексам
 
 автор: antf   (15.09.2006 в 23:12)   письмо автору
 
 

Здравствуйте. Прочитал соответствующую главу самоучителя и вот какие вопросы у меня возникли:

1) Я использую первичный ключ как уникальный идентификатор. Могу ли я заменить первичные ключи на индексы UNIQUE? Этот тип также подразумевает уникальность значений. Иными словами дает ли первичный ключ какие-либо еще возможности кроме уникальности?
2) Очень любопытно было посмотреть пример распространения первичного ключа сразу на 2 столбца. Интересно есть ли практическая надобность в этом?
3) Когда целесообразно использовать в качестве первичного ключа текстовые или строковые столбцы?
4) Правильно ли я понял эффект от индексов: запросы SELECT выполняются быстрее, а UPDATE, DELETE and INSERT медленнее?
5) Правда, что уникальные индексы работают быстрее обычных?
6) Как я понял внешние ключи являются внешними только для программиста. Для mysql - это всего лишь столбец с целочисленными данными. При работе с postgresql я определял внешний ключ так:


CREATE TABLE poll_answers (
  id_answer serial primary key,
  answer text,
  hits integer,
  pos smallint,
  id_poll integer references poll(id_poll)
);


При этом я наивно полагал, что при удалении голосования с id_poll = 9, также автоматически без соотв. запроса удалятся все ответы из таблицы poll_answers. У меня два вопроса. Есть ли в mysql какие-нибудь особые функции для работы с внешними ключами? Каковы особенности работы с внешними ключами в postgresql?
Заранее спасибо.

   
 
 автор: antf   (15.09.2006 в 23:28)   письмо автору
 
   для: antf   (15.09.2006 в 23:12)
 

7) А индекс FULLTEXT влияет на скорость выборки или с этой целью нужно дополнительно присваивать столбцу обычный индекс.
8) Верно ли мое утверждение?

Необходимость в индексировании текстового столбца осознается только тогда, когда начинаются тормоза при выборке данных из него.

   
 
 автор: cheops   (16.09.2006 в 13:32)   письмо автору
 
   для: antf   (15.09.2006 в 23:28)
 

7) Нет он не влияет на скорость выборки (вернее скорее всего затармаживает его в том плане, что объём столбца индексов растёт и на его перелопачивание может уходить больше времени - хотя вероятно, там имеется хитрость по снижению издержек и не одна).
8) Да, утверждение верно.

   
 
 автор: cheops   (16.09.2006 в 13:28)   письмо автору
 
   для: antf   (15.09.2006 в 23:12)
 

1) Да, вы можете использовать вместо первичного ключа, индекс UNIQUE. В MySQL первичный ключ не имеет такого большого значения, как в других базах данных, можно использовать UNIQUE, но не желательно.
2) Да такое практикуется, но скорее не для первичного ключа, который стараются делать сурогатным, а для других индексов. Если в WHERE запросе у вас участвуют два столбца - лучше объявить индекс по двум столбцам.
3) В качестве первичного ключа лучше всегда использовать числовые столбцы - операции с записями почти всегда идут с участием первичного ключа (в WHERE условии), а операции с числовыми столбцами протекают быстрее.
4) да, вы поняли правильно.
5) Не совсем корректное сравнение, это от задачи зависит и запроса... Как правило, уникальный индекс вводят тогда, когда дублирование записей с этим полем не допустимо. А используется ли факт уникальности в поисковых механизмах, зависит от реализации.
6) Не совсем, возможно и каскадное удаление и обновление по внешнему ключу (для таблиц InnoDB) подробнее о которых можно почитать в разделе 23.9.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования