Что быстрее в приведенных ниже двух таблицах типа mysql? - PullRequest
1 голос
/ 06 марта 2020

у меня есть значение 100000, хранящееся в Mysql, и я колебался между двумя вариантами выбора индекса

первый путь - нормальный, с автоматическим приращением идентификатора

enter image description here

, а второе - это отдельное значение 100000 в 200 идентификаторов автоинкремента, и каждый идентификатор имеет 500 Sub_ID, поэтому 200x500 = 100000

enter image description here

Какой из них будет быстрее? первый - традиционный

select value from table where ID = xxx

, а второй -

select value from table where ID = xxx and sub_ID = xxx

, так как первый будет l oop каждый ячейка, но вторая просто l oop в 200 ID, а затем l oop в 500 Sub_ID, так что в теории второй будет лучше, верно?

1 Ответ

0 голосов
/ 06 марта 2020

Первичный ключ один быстрее. В противном случае вы выполняете многократное сканирование индекса. Если бы у вас не было значений более 1 000 000 000 000, я бы не стал "оптимизировать" первичные ключи.

Также, если вы хотите получить только значение, а не только идентификатор, вы можете создать составной индекс идентификатора и значения, который будет самым быстрым вариантом, так как значение будет включено в индекс, и вы даже не будет попадать в таблицу с вашим запросом.

...