# 列和函数最佳实践

+ 坏例子与好例子

```12
/* Negative */
select gmt_create
from ...
where ~!@date_format(gmt_create,'%Y%m%d %H:%i:%s')@!~ = '20090101 00:00:0'

/* Positive */
select date_format(gmt_create,'%Y%m%d %H:%i:%s')
from .. .
where ~!@gmt_create@!~ = str_to_date('20090101 00:00:00','%Y%m%d %H:%i:s')
```

--------------------------------------------------------------------------------
基本原则:在取出字段上可以使用相关函数,但是在 Where 条件中的过滤条件字段上避免使用任何函数,包括数据类型转换函数,以避免索引失效。或者可以考虑使用表达式索引功能。