'3'" Id列当然-6ren">
gpt4 book ai didi

php - Mysql类型隐藏类型转换

转载 作者:行者123 更新时间:2023-11-29 06:57:46 24 4
gpt4 key购买 nike

我正在尝试改进一个旧系统(很久以前写的),其中每个 mysql 查询都是从字符串粘合而来的。所以该查询的示例看起来像

"SELECT * FROM User WHERE id > '3'"

Id列当然是bigint和PK。

mysql 在 id 应该是 int 值的查询中对 '3' 做了什么?我假设它被视为一个字符串(由于'')所以这个值在mysql的分析/优化过程中被转换为int。我对吗?

//更新我可能问错了方式。有两种处理方式。

  1. (快速)Mysql 自动检测到 id 应该是 int 并将查询重写/转换为

     SELECT * FROM User WHERE id > 3

    在将其发送到数据库引擎之前

  2. (难以置信)Mysql 可以

    SELECT * FROM

    然后在循环中应用条件 WHERE id > '3' 并将其转换为每一行

我只是想确定第二种选择是不可能的。

最佳答案

MySQL 总是会将字符串转换为数字以进行比较,在本例中这是正确的做法(它将使用列上的索引来查找值)。
如果您的列是一个字符串并且您将它与一个整数常量进行比较,MySQL 会将列转换为一个整数并且不使用索引。

关于php - Mysql类型隐藏类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11696402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com