|
|
|
Вопрос о скорости выборки.
|
|||
|---|---|---|---|
|
#18+
Суть вопроса: Известно что при выборке по составному 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 -> скорость увеличесться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2014, 17:52:40 |
|
||
|
Вопрос о скорости выборки.
|
|||
|---|---|---|---|
|
#18+
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' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2014, 18:22:16 |
|
||
|
Вопрос о скорости выборки.
|
|||
|---|---|---|---|
|
#18+
scyесли выборка where y=4 and z=5 ->то насколько я понимаю, будет полный перебор таблицы.Или полный перебор индекса, если других полей в результате не требуется. scyВопрос если я сформулирую запрос как: where x like '%' and y=3 and z=5 -> скорость увеличесться?Время выполнения запроса немного увеличится за счет затрат процессорного времени на LIKE. Индексного доступа к данным не появится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2014, 18:34:56 |
|
||
|
Вопрос о скорости выборки.
|
|||
|---|---|---|---|
|
#18+
miksoftscyесли выборка where y=4 and z=5 ->то насколько я понимаю, будет полный перебор таблицы.Или полный перебор индекса, если других полей в результате не требуется. спасибое именно это и хотел услышать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2014, 19:58:24 |
|
||
|
Вопрос о скорости выборки.
|
|||
|---|---|---|---|
|
#18+
miksoftscyесли выборка where y=4 and z=5 ->то насколько я понимаю, будет полный перебор таблицы.Или полный перебор индекса, если других полей в результате не требуется. scyВопрос если я сформулирую запрос как: where x like '%' and y=3 and z=5 -> скорость увеличесться?Время выполнения запроса немного увеличится за счет затрат процессорного времени на LIKE. Индексного доступа к данным не появится. Миксофт - а вот тут я бы хотел уточнить! 1)действительно если я выбираю из таблицы нечто, что можно выбрать лишь на индексе, но индекс применить нельзя - вот как у ТС - индекс=абв а я ищу по полям б и в, и в вывод идут только а б в и возможно ПК(например поле г) 2)как експлейном 100% определить, что скан будет не по таблице а по индексу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2014, 10:57:15 |
|
||
|
Вопрос о скорости выборки.
|
|||
|---|---|---|---|
|
#18+
alex5646574987654531)действительно если я выбираю из таблицы нечто, что можно выбрать лишь на индексе, но индекс применить нельзя - вот как у ТС - индекс=абв а я ищу по полям б и в, и в вывод идут только а б в и возможно ПК(например поле г)В этом случае индекс может использоваться как покрывающий. Но может и не использоваться. Это на усмотрение оптимизатора. alex5646574987654532)как експлейном 100% определить, что скан будет не по таблице а по индексу?Точно не помню, но в колонке индекса должен быть указан индекс, а в колонке REF пусто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2014, 11:05:01 |
|
||
|
Вопрос о скорости выборки.
|
|||
|---|---|---|---|
|
#18+
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). И конечно суммарное условие должно быть селективно (отбирать мало записей). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2014, 18:45:53 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38805392&tid=1833941]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
109ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 438ms |

| 0 / 0 |
