мне любопытно невыгоде цитирование целых чисел в MYSQL запросовНедостатки цитирования целых чисел в запросе Mysql?
Например
SELECT col1,col2,col3 FROM table WHERE col1='3';
VS
SELECT col1,col2,col3 FROM table WHERE col1= 3;
Если есть снижение производительности, что размер его и почему это происходит? Есть ли другие недостатки, кроме того, что производительность?
Благодаря Эндрю
Edit: Причина этого вопроса
1. Потому что я хочу, чтобы понять разницу, потому что мне интересно
2. Я экспериментировал с пути прохождения составных ключей от моя база данных в моем php-коде как psudo-Id-keys (PIK). Эти ПИК используются для таргетинга на запись. Например, если первичный ключ (AreaCode, категория, RecordDtm)
Мой PIK в URL будет выглядеть следующим образом:
index.php?action=hello&Id=20001,trvl,2010:10:10 17:10:45
И я выбрал бы эту запись так:
$Id = $_POST['Id'];//equals 20001,trvl,2010:10:10 17:10:45
$sql = "SELECT AreaCode,Category,RecordDtm,OtherColumns.... FROM table WHERE (AreaCode,Category,RecordDtm) = ({$Id});
$mysqli->query($sql):
......and so on.
В этот момент запрос не будет работать из-за datetime (который должен быть указан), и он открыт для SQL-инъекции, потому что я не избежал этих значений. Учитывая тот факт, что я не всегда буду знать, как построены мои PIK, я бы написал функцию, разделяющую Id PIK в запятых, очищает каждую часть с помощью real_escape_string и помещает ее обратно вместе со значениями, указанными. Например: $ Id = "'20001', 'trvl', '2010: 10: 10 17:10:45'" Конечно, в этой функции, которая разламывается и очищает идентификатор, я могу проверить, действительно ли значение это число или нет. Если это число, не цитируйте его. Если это ничего, кроме строки, то процитируйте ее.
Почему бы просто не делать правильные вещи, а не беспокоиться о том, что синтаксический анализатор запросов исправит ваши ошибки? –
Почему бы не всегда придерживаться * чего-то, а не беспокоиться о преждевременных оптимизациях? – strager
Потому что я хочу узнать немного больше о том, почему мы не просто всегда ставим кавычки вокруг всех значений в запросах. Я экспериментирую с тем, чтобы передавать составные ключи из базы данных в виде одного идентификатора psudo в PHP-коде. – andrew