最近做数据库迁移,将oracle表迁移到mysql,发现有个sql迁移完后查询特别慢,稍微研究一下发现是where条件中对字段使用了trim函数导致索引失效,于是直接去掉trim函数就好了,因为mysql和oracle中对char类型的处理方式不同:
oracle中的char类型:固定长度,当存储值长度不足时后面填充空格,取出时会带上空格;
mysql中的char类型:固定长度,当存储值长度不足时后面填充空格,取出时会去除字符串后面的空格;
总结:oracle中char类型最好用于存储长度固定的值,避免处理字符串后面的空格;mysql中char类型也适合存储长度固定的值,但是它使用时会自动去除后面的空格,使用上有点像可变长度的varchar类型。