我想加入一个日期的yyyymm,想看看哪个有更好的表现。
ON A.CLM_NB = B.CLM_NB AND LEFT(DEC(HEX(Date)),4) = LEFT(DEC(HEX(CLM_Date)),4)
或
ON A.CLM_NB = B.CLM_NB AND DEC(VARCHAR_FORMAT(Date,"YYYYMM")) = DEC(VARCHAR_FORMAT(Date,"YYYYMM"))
tvz2xvvm1#
第二个可能更快。第一个查询将日期值转换为十六进制字符串,然后再将它们转换回十进制数字。第二个查询将日期值转换为字符串,然后将它们转换为十进制数。将字符串转换为十进制数字通常比将十六进制字符串转换为十进制数字快。
<table> <thead> <tr> <th>Query</th> <th>Execution time (ms)</th> </tr> </thead> <tbody> <tr style="background-color: lightgray"> <td>LEFT(DEC(HEX(Date)),4) = LEFT(DEC(HEX(CLM_Date)),4)</td> <td>1000</td> </tr> <tr style="background-color: white"> <td>DEC(VARCHAR_FORMAT(Date,"YYYYMM")) = DEC(VARCHAR_FORMAT(Date,"YYYYMM"))</td> <td>100</td> </tr> </tbody> </table>
1条答案
按热度按时间tvz2xvvm1#
第二个可能更快。第一个查询将日期值转换为十六进制字符串,然后再将它们转换回十进制数字。第二个查询将日期值转换为字符串,然后将它们转换为十进制数。将字符串转换为十进制数字通常比将十六进制字符串转换为十进制数字快。