すべてのmysqlクエリが文字列から接着されている古いシステム(何年も前に書かれた)を改善しようとしています。そのクエリの例は次のようになります
"SELECT * FROM User WHERE id > '3'"
Id 列はもちろん bigint と PK です。
idがint値でなければならないクエリで、mysqlは「3」で何をしますか? これは文字列として扱われるため ('' により)、この値は mysql による分析/最適化プロセス中に int にキャストされると想定しています。私は正しいですか?
//UPDATEおそらく間違った方法で尋ねました。対処方法は2つあります。
(高速) Mysql は id が int であることを自動的に検出し、クエリを書き換え/キャストします。
SELECT * FROM User WHERE id > 3
DBエンジンに送信する前に
(信じられない) Mysql は
SELECT * FROM
次に、ループで条件WHERE id > '3'を適用し、すべての行にキャストします
2番目のオプションが不可能であることを確認したいだけです。