Ключевые поля и названия ключей

2People

Новичок
Ключевые поля и названия ключей

Допустим у меня есть поле name, которое я делаю ключевым.
Ключу надо дать название, и я называю его imya.

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

svetasmirnova

маленький монстрик
Да, имеет. Например, при выборке можно указать использовать или нет конкретный ключ.
 

2People

Новичок
т.е. я могу связывать таблици по полю name, и при этом использовать/не использовать ключ imya? Кажется в мускл нет связи по внешним ключам, полюбому происходит связывание по полям.

кусок из мануала: "Фактически для соединения двух таблиц внешние ключи не нужны. "
 

svetasmirnova

маленький монстрик
нет, не в связях: при выборке (поиске)

-~{}~ 25.09.05 18:50:

>кусок из мануала: "Фактически для соединения двух таблиц внешние ключи не нужны. "
Мда... Чувствуется недостаток знаний. Расскажи для чего ключи используешь.
 

2People

Новичок
да, да. я сейчас это понял.

Появился другой вопрос:
Если я указываю в запросе
select * from table_name where name='john'
то mysql будет шерстить только по полю name и не будет трогать другие поля? Если так, то зачем говорить: ищи по полю name и по ключу imya. (если в ключе imya используется поле name)

-~{}~ 25.09.05 18:57:

>кусок из мануала: "Фактически для соединения двух таблиц внешние ключи не нужны. "
Мда... Чувствуется недостаток знаний. Расскажи для чего ключи используешь.
По ним seleсt проходит быстрее и для связи таблиц (хотя внешние ключи в мускл не работают, но это в надежде на будущее)
 

svetasmirnova

маленький монстрик
Потому что индексы применяются для ускорения поиска. Индексов можно указать несколько и они могут быть разными.
Это полезно, если оператор EXPLAIN (выводящий информацию о структуре и порядке выполнения запроса SELECT), показывает, что MySQL из списка возможных индексов выбрал неправильный. Если нужно. чтобы для поиска записи в таблице применялся только один из возможных индексов, следует задать значение этого индекса в USE INDEX (key_list). Альтернативное выражение IGNORE INDEX (key_list) запрещает использование в MySQL данного конкретного индекса.
 

2People

Новичок
Автор оригинала: svetasmirnova
Потому что индексы применяются для ускорения поиска. Индексов можно указать несколько и они могут быть разными.
Тоесть, если у меня есть поля: а б в г.
Я ищу по полям: (а б) и по полям (а б в)
есть индексы: первый(а б) и второй ( а б в )

При поиске по (а б) мне надо указать индекс "первый", т.к. мускл может начать искать по индексу "второй"

так?
 

svetasmirnova

маленький монстрик
Да.

Т.е. я не знаю точно. Порядок действий таков: explain select select_statement; Если показывает, что использует не тот индекс, подставляй нужный. См. также "гл. 5.4.3 Использование индексов в MySQL" мануала.
 

2People

Новичок
Автор оригинала: svetasmirnova
Да.

Т.е. я не знаю точно. Порядок действий таков: explain select select_statement; Если показывает, что использует не тот индекс, подставляй нужный. См. также "гл. 5.4.3 Использование индексов в MySQL" мануала.
Спасибо!
 
Сверху