如果在某一条件下使用的列的数据类型与 CREATE TABLE 语句中的列的定义不同,那么 SQL 语句可能会遇到额外的成本。
CREATE TABLE table1 (a integer, ); SELECT * FROM table1 WHERE a = '123';
在执行将 123 转换成整数之前,数据库服务器重写该查询。SET EXPLAIN 输出按其调整的格式显示查询。该数据转换没有显著的开销。
CREATE TABLE table2 (char_col char(3), ); SELECT * FROM table2 WHERE char_col = 1;
' 1' '001' '1'