LEFT或DATE_FORMAT,在mysql的SELECT查询中,哪个更快地重新格式化日期?
我将展示这个问题的一个例子。
- PERSON表信息**
| 列名|类型|
| - ------|- ------|
| 姓名|变量字符(20)|
| 年份|日期时间|
- 人员**
| 姓名|年份|
| - ------|- ------|
| 崔维斯|2020年1月1日|
| 山姆|2021年1月1日|
如果执行'SELECTYEARFROMPERSON'查询,可以看到下面的结果。
| 年份|
| - ------|
| 2020年01月01日00时00分|
| 2021年01月01日00时00分|
但我希望结果如下。
| 年份|
| - ------|
| 2020年1月1日|
| 2021年1月1日|
所以,我想使用下面的查询之一.
- 选择*左(年份,10)来自人
- 选择****日期格式**(年份," %Y- % m- % d")
但是,我想知道哪种查询性能更好。
求你了帮帮我。
2条答案
按热度按时间hmmo2u0o1#
从技术上讲,
LEFT()
几乎快了四倍,基于我在M1 MacBook上的测试。你的结果可能会有所不同。但是,考虑到我必须执行这两个表达式1亿次才能观察到显著的差异,它们都非常快,所以我不会担心它,因为查询的其他部分可能会对性能产生更大的影响。
担心这两个功能哪一个性能更好,就像担心用一个手指还是两个手指去举100公斤的杠铃,哪个更好。
nxowjjhe2#
最合适的解决方案是使用
year
函数,它接受日期数据类型并返回一个数字。你提到的函数应该是用来操作字符串的,在语义上是不合适的。