powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запутался с ключами (indexes)
12 сообщений из 12, страница 1 из 1
Запутался с ключами (indexes)
    #38864829
zhurchick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я совсем запутался с ключами.
Дайте подсказку.
Вот у меня имеется три поля в таблице одно автоинкремент, а другие два просто содержат числа (не уникальные). Они будут содержать только числа и ничего иного.
Поиск будет осуществлять сразу по трем полям.
Так вот, нужно ли все эти поля добавлять в индекс? И можно ли это сделать след. образом:
primary key (`field1`, `field2`, `field3`)

Или достаточно одного опля с индексом?
...
Рейтинг: 0 / 0
Запутался с ключами (indexes)
    #38864897
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажите возможные секции WHERE и дайте оценку количества каждого из вариантов в процентах. Тогда будет предмет для разговора.
Первичный же индекс из трёх полей - заведомая хрень.
...
Рейтинг: 0 / 0
Запутался с ключами (indexes)
    #38865190
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhurchickЯ совсем запутался с ключами.
Дайте подсказку.
Вот у меня имеется три поля в таблице одно автоинкремент, а другие два просто содержат числа (не уникальные). Они будут содержать только числа и ничего иного.
Поиск будет осуществлять сразу по трем полям.
Так вот, нужно ли все эти поля добавлять в индекс? И можно ли это сделать след. образом:
primary key (`field1`, `field2`, `field3`)

Или достаточно одного опля с индексом?

автор, ты сначала подумай над тем что ты пишешь.

поле автоинкремент(уникальное) и два другие не уникальные - поиск сразу по всем трём.

это как?
1 20 30
2 20 40
3 22 30

и ты будешь искать где числа 3 - 30 - 50
если есть поле уникальное, то зачем остальные критерии???

наверно всётаки поиск будет либо по первому, искать конкретную запись, либо по двум другим.

если всегда по обоим, то в индексе должно быть то поле, где дробление записей значением поля меньше
(если в таблице 1000 000 записей, и возможных значений поля 1000, то значит индекс на этом поле позволяет из милионна сразу выбрать нужную тысячу строк)
для другого скажем возможных значений 100 - тоесть дробление на куски по 10000 всреднем.

вот значит индекс делать на первое поле.

при конкретном значении первого поля, второе значение как дробит эту 1000 записей??? если второе скажем равно первое разделить нацело на 10, то вообще никак, третье полностью зависит от второго, смысла добавлять его в индекс 0

если же оно совершенно случайные значения даёт - можно добавить. даже нужно, если вставка удаление не более часты чем выборка(ну чтоб не вышло что потери на перестроение постоянное индекса более сложно, перекроют выгоду выборки по составному ключу)
...
Рейтинг: 0 / 0
Запутался с ключами (indexes)
    #38866638
zhurchick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex564657498765453,

Точно, сейчас всю систему пересмотрел.
Получается следующее:
Имеются три поля с числовым типом и выборка не будет осуществляться сразу по трём, а точнее выборка будет осуществляться так:
`field1` = 3 OR `field2` = 3 OR `field3` = 3

В таком случае нужно задавать индекс всем трем полям?
...
Рейтинг: 0 / 0
Запутался с ключами (indexes)
    #38866643
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhurchickа точнее выборка будет осуществляться так:
`field1` = 3 OR `field2` = 3 OR `field3` = 3три отдельных индекса
если повезёт, мускль в некоторых запросах сможет даже использовать более одного
...
Рейтинг: 0 / 0
Запутался с ключами (indexes)
    #38866650
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhurchickЯ совсем запутался с ключами.
Дайте подсказку.
Вот у меня имеется три поля в таблице одно автоинкремент, а другие два просто содержат числа (не уникальные). Они будут содержать только числа и ничего иного.
Поиск будет осуществлять сразу по трем полям.


Сразу по трём полям поиск бессмысленен.
Либо поиск по ключу (автоинкрементное поле),
либо по двум другим.

zhurchickТак вот, нужно ли все эти поля добавлять в индекс? И можно ли это сделать след. образом:
primary key (`field1`, `field2`, `field3`)

Или достаточно одного опля с индексом?

Для чего достаточно ?
Вообще, индексы вовсе не обязательно создавать, так что достаточно создать просто таблицу, и всё будет работать.


primary key (`field1`)
key(`field2`)
key(`field3`)
...
Рейтинг: 0 / 0
Запутался с ключами (indexes)
    #38866733
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhurchickвыборка будет осуществляться так:
`field1` = 3 OR `field2` = 3 OR `field3` = 3

В таком случае нужно задавать индекс всем трем полям?
Трансформировать в UNION. Тогда каждый подзапрос будет использовать индекс по одному из полей.
...
Рейтинг: 0 / 0
Запутался с ключами (indexes)
    #38866737
zhurchick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,
Но ведь если исходить из логики mysql будет искать по трем разным условиями и следовательно все три поля независимы друг от друга, а значит индекс должен быть у трех. Или я что-то не так понимаю?
...
Рейтинг: 0 / 0
Запутался с ключами (indexes)
    #38866739
zhurchick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

А разница это записи:
primary key (`field1`)
key(`field2`)
key(`field3`)

Перед этой primary key (`field1`, `field2`, `field3`) какая? Или ее вовсе нет?
...
Рейтинг: 0 / 0
Запутался с ключами (indexes)
    #38866917
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhurchickMasterZiv,

А разница это записи:
primary key (`field1`)
key(`field2`)
key(`field3`)

Перед этой primary key (`field1`, `field2`, `field3`) какая? Или ее вовсе нет?

Код: plaintext
primary key (`field1`, `field2`, `field3`) 

ты можешь искать по (`field1`) , по (`field1`, `field2`) и по (`field1`, `field2`, `field3`)

Код: plaintext
1.
2.
primary key (`field1`)
key(`field2`)
key(`field3`)

ты можешь искать по (`field1`) , или по (`field2`) или по (`field3`)
...
Рейтинг: 0 / 0
Запутался с ключами (indexes)
    #38866965
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhurchicktanglir,
Но ведь если исходить из логики mysql будет искать по трем разным условиями и следовательно все три поля независимы друг от друга, а значит индекс должен быть у трех. Или я что-то не так понимаю?

да чегото не понимаешь.

один индекс, на одно чтение таблицы!!!

from table ==== один индекс будет использоваться. хотя верно подметили, что иногда (я раз встречал) мускл сделал merge indexes - два индекса, нашол их пересечение. но не помню как я добился этого.
...
Рейтинг: 0 / 0
Запутался с ключами (indexes)
    #38867009
zhurchick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят, спасибо Вам большое за помощь!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запутался с ключами (indexes)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]