Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / кавычки для интов / 4 сообщений из 4, страница 1 из 1
05.09.2015, 16:42:04
    #39043999
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кавычки для интов
Код: sql
1.
create table t (id int);



существует ли какая-то разница в запросах с кавычками и без?

Код: sql
1.
select * from where id = 1;



vs

Код: sql
1.
select * from where id = '1';
...
Рейтинг: 0 / 0
05.09.2015, 16:55:48
    #39044009
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кавычки для интов
Приведение типов на этапе компиляции запроса.

В построенном плане обработки никакой разницы уже нет.
...
Рейтинг: 0 / 0
05.09.2015, 17:04:28
    #39044014
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кавычки для интов
Lumix,

Разница существует. Иногда оптимизатор ошибается и приведение типов делает не с той стороны равенства. Т.е. в приведенном примере он может начать преобразовывать id к строке. В таких случаях не могут быть использованы индексы, в результате чего резко возрастает время работы. А иногда еще и результат может отличаться.
...
Рейтинг: 0 / 0
05.09.2015, 21:15:51
    #39044075
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кавычки для интов
miksoft, спасибо!! очень ценная информация, потому что у нас в системах очень много где используются именно кавычки в отношении интовых айдишников (ну которые primary), но это не результат безалаберности, а результат работы шаблонизатора sql запросов. Я подумаю, что можно сделать, чтобы убрать кавычки там, где они 100% не нужны.

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

Код: sql
1.
select * from t where id = '3412' + 0
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / кавычки для интов / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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