我正在尝试改进一个旧系统(很久以前写的),其中每个 mysql 查询都是从字符串粘合的。所以那个查询的例子看起来像
"SELECT * FROM User WHERE id > '3'"
id 列当然是 bigint 和 PK。
mysql 在 id 应该是 int 值的查询中对 '3' 做了什么?我假设它被视为一个字符串(由于'')所以这个值在mysql的分析/优化过程中被转换为int。我对吗?
//更新我可能问错了方式。有两种处理方法。
(快速)Mysql 自动检测到 id 应该是 int 并将查询重写/转换为
SELECT * FROM User WHERE id > 3
在将其发送到数据库引擎之前
(难以置信)Mysql 确实
SELECT * FROM
然后在循环中应用条件 WHERE id > '3' 并将其转换为每一行
我只是想确定第二种选择是不可能的。