Какое-либо влияние производительности в Oracle для использования КАК 'строка' по сравнению с = 'строка'?

Подтвердить ввод.

Это может быть сделано разными способами. Одним из них может быть проверка, содержит ли глобальная переменная

Подтвердить ввод.

Это может быть сделано разными способами. Одним из них может быть проверка, содержит ли глобальная переменная [111] ключ file, и содержит ли

Подтвердить ввод.

Это может быть сделано разными способами. Одним из них может быть проверка, содержит ли глобальная переменная [111] ключ [112], и содержит ли [113] license_id, username и address.

if (isset(

Подтвердить ввод.

Это может быть сделано разными способами. Одним из них может быть проверка, содержит ли глобальная переменная

Подтвердить ввод.

Это может быть сделано разными способами. Одним из них может быть проверка, содержит ли глобальная переменная [111] ключ file, и содержит ли

Подтвердить ввод.

Это может быть сделано разными способами. Одним из них может быть проверка, содержит ли глобальная переменная [111] ключ [112], и содержит ли [113] license_id, username и address.

[110]

PS. Как правило, использование глобальных переменных обременено угрозой безопасности. Что бы вы могли сделать, не подвергая его рефакторингу полностью, подумайте о добавлении пользовательского заголовка (например, X-Client: My Fancy CSharp Application) и проверке его внутри кода PHP.

GET
license_id, username и address.

[110]

PS. Как правило, использование глобальных переменных обременено угрозой безопасности. Что бы вы могли сделать, не подвергая его рефакторингу полностью, подумайте о добавлении пользовательского заголовка (например, X-Client: My Fancy CSharp Application) и проверке его внутри кода PHP.

FILES
ключ file, и содержит ли

Подтвердить ввод.

Это может быть сделано разными способами. Одним из них может быть проверка, содержит ли глобальная переменная [111] ключ [112], и содержит ли [113] license_id, username и address.

[110]

PS. Как правило, использование глобальных переменных обременено угрозой безопасности. Что бы вы могли сделать, не подвергая его рефакторингу полностью, подумайте о добавлении пользовательского заголовка (например, X-Client: My Fancy CSharp Application) и проверке его внутри кода PHP.

GET
license_id, username и address.

[110]

PS. Как правило, использование глобальных переменных обременено угрозой безопасности. Что бы вы могли сделать, не подвергая его рефакторингу полностью, подумайте о добавлении пользовательского заголовка (например, X-Client: My Fancy CSharp Application) и проверке его внутри кода PHP.

FILES['file'])) { die('Request invalid'); }

PS. Как правило, использование глобальных переменных обременено угрозой безопасности. Что бы вы могли сделать, не подвергая его рефакторингу полностью, подумайте о добавлении пользовательского заголовка (например, X-Client: My Fancy CSharp Application) и проверке его внутри кода PHP.

GET
license_id, username и address.

[110]

PS. Как правило, использование глобальных переменных обременено угрозой безопасности. Что бы вы могли сделать, не подвергая его рефакторингу полностью, подумайте о добавлении пользовательского заголовка (например, X-Client: My Fancy CSharp Application) и проверке его внутри кода PHP.

FILES
ключ file, и содержит ли

Подтвердить ввод.

Это может быть сделано разными способами. Одним из них может быть проверка, содержит ли глобальная переменная [111] ключ [112], и содержит ли [113] license_id, username и address.

[110]

PS. Как правило, использование глобальных переменных обременено угрозой безопасности. Что бы вы могли сделать, не подвергая его рефакторингу полностью, подумайте о добавлении пользовательского заголовка (например, X-Client: My Fancy CSharp Application) и проверке его внутри кода PHP.

GET
license_id, username и address.

[110]

PS. Как правило, использование глобальных переменных обременено угрозой безопасности. Что бы вы могли сделать, не подвергая его рефакторингу полностью, подумайте о добавлении пользовательского заголовка (например, X-Client: My Fancy CSharp Application) и проверке его внутри кода PHP.

14
задан JosephStyons 25 September 2008 в 05:46
поделиться

6 ответов

Существует четкое различие, когда Вы используете, связывают переменные, которые необходимо использовать в Oracle для чего-либо кроме организации хранилищ данных или других объемных операций данных.

Берут случай:

SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE :b1

Oracle не может знать что значение: b1 является '%some_value % 'или 'some_value' и т.д. до времени выполнения, таким образом, он сделает оценку кардинальности результата на основе эвристики и придумает соответствующий план, который или может или не может подойти для различных значений: b, такие как '%A'', %', и т.д.

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

Так, лично я не начал бы использовать КАК в качестве замены для =. Оптимизатор довольно легко одурачить иногда.

18
ответ дан 24 October 2019 в 05:06
поделиться

Проверьте эти , ОБЪЯСНЯЕТ ПЛАН относительно обоих. Они генерируют тот же план выполнения, так к базе данных, они - то же самое.

Вы использовали бы = для тестирования на равенство, не подобие. Если Вы управляете сравнительным значением также, то оно не имеет большую часть значения. Если это отправляется пользователем, то 'яблоко' и '% яблока' дали бы Вам очень различные результаты.

5
ответ дан 24 October 2019 в 05:06
поделиться

, Если это правда, мой вопрос, почему когда-нибудь используют "="?

А лучший вопрос: Если это правда, почему использованию "НРАВИТСЯ" тестировать на равенство? Вы добираетесь для сохранения удара клавиши Shift и всех, кто читает, сценарий добирается, чтобы быть перепутанным.

3
ответ дан 24 October 2019 в 05:06
поделиться

КАК '%WHATEVER %' должен будет сделать полное индексное сканирование.

, Если нет процента, то это действует как равняние.

, Если % находится на одном конце, то индекс может быть сканированием диапазона.

я не уверен, как оптимизатор обрабатывает связанные поля.

1
ответ дан 24 October 2019 в 05:06
поделиться

Вы попробовали его? Тестирование является единственным верным способом знать.

Как в стороне, ни один из этих операторов несомненно не возвратит те же строки. Испытайте:

insert into some_table (some_field) values ('some_value');
insert into some_table (some_fieled) values ('1some_value2');
insert into some_table (some_field) values ('some1value');

SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE '%some_value%';

SELECT * FROM SOME_TABLE WHERE SOME_FIELD = 'some_value';

SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE 'some_value';

С точки зрения ясности и избегать тонких ошибок, лучше никогда не использовать КАК , если Вам не нужно, это - подстановочная функциональность. (Очевидно, при выполнении специальных запросов, это, вероятно, в порядке.)

2
ответ дан 24 October 2019 в 05:06
поделиться

like официально то же, если у Вас нет символов как $% и т.д., таким образом, это не большое удивление найти, что это имеет ту же стоимость.

я нахожу ответ David Aldridge интересным, поскольку Ваше приложение должно использовать, связывают переменные. С like '%foobar' Вы не можете использовать упорядочивание в индексе. Если запрос будет предварительно скомпилирован, то Он будет вести, чтобы больше индексировать или представить полные сканирования в виде таблицы.

, Кроме того, я нахожу это опасным, поскольку это может привести к Внедрениям SQL и странным ошибкам (например, если существует пользователь по имени Джон, хакер может создать пользователя, названного 'joh и пытаться войти в систему)

, почему рискуют? '=' более ясно и не имеет ни одной из тех проблем.

и пытаться войти в систему)

, почему рискуют? '=' более ясно и не имеет ни одной из тех проблем.

1
ответ дан 24 October 2019 в 05:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: