开发者社区 > 数据库 > 正文

gmt_create列没有索引,所以我打算用serial_no 做查询条件,这列是字符串格式的前8位

gmt_create列没有索引,所以我打算用serial_no 做查询条件,这列是字符串格式的前8位是日期字符串,所以想用like 匹配下的image.png

展开
收起
真的很搞笑 2023-04-17 19:01:52 198 0
2 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    您在使用like语句进行匹配查询时,需要注意到以下几点:

    1. 匹配模式:由于 serial_no 前8位是日期字符串,所以在like语句中需要使用带百分号的左匹配模式。例如,如果要查询日期为20220101的记录,可以使用如下语句:SELECT * FROM table_name WHERE serial_no LIKE '20220101%'

    2. 索引利用:尽管 serial_no 列是字符串类型,但是如果通过like语句进行匹配查询,那么就无法充分利用到索引。因为在进行like语句的匹配时,需要逐行扫描表中的每一条记录,而无法使用到任何索引。因此,如果你需要频繁使用 serial_no 列进行日期匹配查询,最好添加一个新的日期字段并创建索引。

    3. 数据类型转换:如果 serial_no 列和进行查询的日期参数数据类型不一致,那么在匹配时需要先进行数据类型转换。例如,如果查询参数为'20220101',需要将它转换成与 serial_no 列相同的字符类型,才能进行匹配。

    4. 性能问题:由于like语句在表中进行全表扫描,所以如果表中数据量很大,或者同时有多个用户进行查询,就可能会导致性能问题。因此,建议您优化数据库结构,包括拆分表、添加索引等操作,以提高查询效率。

    2023-04-30 10:30:32
    赞同 展开评论 打赏
  • 不是日期不太好处理 先手动写条件吧 下周三晚上修复一下这个空格问题 你再建周期任务,此回答整理自钉群“阿里云DMS数据管理用户交流群”

    2023-04-19 08:04:26
    赞同 展开评论 打赏
问答分类:
问答地址:

数据库领域前沿技术分享与交流

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载