Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вопрос о скорости выборки. / 7 сообщений из 7, страница 1 из 1
12.11.2014, 17:52:40
    #38803932
scy
scy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос о скорости выборки.
Суть вопроса:
Известно что при выборке по составному primary ключу(x,y,z) , мы получаем быстрые выборки в случаях если у нас where x=5; x=5 and y=6; x=5 and y=3 and z=6; - во всяком случае из того ,что я прочел.

если выборка where y=4 and z=5 ->то насколько я понимаю, будет полный перебор таблицы.

Вопрос если я сформулирую запрос как: where x like '%' and y=3 and z=5 -> скорость увеличесться?
...
Рейтинг: 0 / 0
12.11.2014, 18:22:16
    #38803978
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос о скорости выборки.
scyСуть вопроса:
Известно что при выборке по составному primary ключу(x,y,z) , мы получаем быстрые выборки в случаях если у нас where x=5; x=5 and y=6; x=5 and y=3 and z=6; - во всяком случае из того ,что я прочел.

если выборка where y=4 and z=5 ->то насколько я понимаю, будет полный перебор таблицы.

Вопрос если я сформулирую запрос как: where x like '%' and y=3 and z=5 -> скорость увеличесться?

секция where АДИТИВНАЯ. перестановка порядков не влияет на рузельтат. адна из причин почему появились джоины вместро старого синтаксиса.

субд люая, секцию веар перетасовывает как ей удобно.

расмотрим два случая

первый - поле хуз - число трёхциферное, на него индекс(на одно поле)

второй - три поля х у з , каждое однофиферное.

для индекса эти две ситуации идентичные.

where x like '%' and y =3 and z =5

идентично where xyz like '%35'
...
Рейтинг: 0 / 0
12.11.2014, 18:34:56
    #38803992
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос о скорости выборки.
scyесли выборка where y=4 and z=5 ->то насколько я понимаю, будет полный перебор таблицы.Или полный перебор индекса, если других полей в результате не требуется.


scyВопрос если я сформулирую запрос как: where x like '%' and y=3 and z=5 -> скорость увеличесться?Время выполнения запроса немного увеличится за счет затрат процессорного времени на LIKE. Индексного доступа к данным не появится.
...
Рейтинг: 0 / 0
12.11.2014, 19:58:24
    #38804084
scy
scy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос о скорости выборки.
miksoftscyесли выборка where y=4 and z=5 ->то насколько я понимаю, будет полный перебор таблицы.Или полный перебор индекса, если других полей в результате не требуется.


спасибое именно это и хотел услышать.
...
Рейтинг: 0 / 0
13.11.2014, 10:57:15
    #38804485
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос о скорости выборки.
miksoftscyесли выборка where y=4 and z=5 ->то насколько я понимаю, будет полный перебор таблицы.Или полный перебор индекса, если других полей в результате не требуется.


scyВопрос если я сформулирую запрос как: where x like '%' and y=3 and z=5 -> скорость увеличесться?Время выполнения запроса немного увеличится за счет затрат процессорного времени на LIKE. Индексного доступа к данным не появится.

Миксофт - а вот тут я бы хотел уточнить!

1)действительно если я выбираю из таблицы нечто, что можно выбрать лишь на индексе, но индекс применить нельзя - вот как у ТС - индекс=абв а я ищу по полям б и в, и в вывод идут только а б в и возможно ПК(например поле г)

2)как експлейном 100% определить, что скан будет не по таблице а по индексу?
...
Рейтинг: 0 / 0
13.11.2014, 11:05:01
    #38804502
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос о скорости выборки.
alex5646574987654531)действительно если я выбираю из таблицы нечто, что можно выбрать лишь на индексе, но индекс применить нельзя - вот как у ТС - индекс=абв а я ищу по полям б и в, и в вывод идут только а б в и возможно ПК(например поле г)В этом случае индекс может использоваться как покрывающий. Но может и не использоваться. Это на усмотрение оптимизатора.


alex5646574987654532)как експлейном 100% определить, что скан будет не по таблице а по индексу?Точно не помню, но в колонке индекса должен быть указан индекс, а в колонке REF пусто.
...
Рейтинг: 0 / 0
13.11.2014, 18:45:53
    #38805392
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос о скорости выборки.
scyСуть вопроса:
Известно что при выборке по составному primary ключу(x,y,z) , мы получаем быстрые выборки в случаях если у нас where x=5; x=5 and y=6; x=5 and y=3 and z=6; - во всяком случае из того ,что я прочел.


Это не обязательно так. Например, если у тебя в таблице 50% записей будут с x=5, то выборка только по x=5 будет медленной,
а по x=5 and y=6 -- быстрее, и по x=5 and y=3 and z=6 ещё быстрее (при условии, естественно, что доп. условия отфильтровывают всё меньше и меньше записей).

При этом будет или не будет использоваться индекс в случае x=5 -- не важно. Если будет, производительность запроса будет как правило наоборот ниже.

scyесли выборка where y=4 and z=5 ->то насколько я понимаю, будет полный перебор таблицы.


Возможно, не будет использоваться индекс для позиционирования. это -- да. Но индекс может таки использоваться для
сканирования таблицы, и -- да, должны просматриваться все записи (индекса или индекса и таблицы).

scyВопрос если я сформулирую запрос как: where x like '%' and y=3 and z=5 -> скорость увеличесться?


Нет. Потому что по условию x like '%' никакие записи не отфильтровываются.
Индекс по (xyz) не может быть использован для позиционирования по нему для условия x like '%' and y=3 and z=5.
У ведущих колонок (первых в индексе) должня быть указаны конкретные значения или суффиксы значения (для like).
И конечно суммарное условие должно быть селективно (отбирать мало записей).
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вопрос о скорости выборки. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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