开发者社区 > 数据库 > 关系型数据库 > 正文

PolarDB取这张表的 今天的最后编号,为什么 今天有值时,速度快,没值时,要10几秒才出来?

"PolarDB取这张表的 今天的最后编号,为什么 今天有值时,速度快,没值时,要10几秒才出来?是用了limit 的问题吗?SELECT invoice_number
FROM fc_invoice
WHERE DATE_FORMAT(create_time, '%Y-%m-%d') = DATE_FORMAT(NOW(), '%Y-%m-%d')
ORDER BY invoice_number DESC
LIMIT 1"

展开
收起
真的很搞笑 2024-02-08 13:58:14 63 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    这个问题可能是由于使用了LIMIT 1导致的。当表中有值时,查询速度较快,因为只需要返回一条记录。但是当表中没有值时,查询速度较慢,因为需要扫描整个表来找到符合条件的记录。为了提高查询速度,可以尝试使用索引或者优化查询语句。

    2024-02-17 08:48:43
    赞同 展开评论 打赏
  • 十分耕耘,一定会有一分收获!

    楼主你好,看了你的问题,查询速度变慢可能与查询的数据量和索引有关,而不一定是LIMIT的问题,当有值时查询语句能够快速定位到符合条件的数据并返回结果,但当没有符合条件的数据时,查询语句需要扫描整个表并按照invoice_number字段排序,然后再取最后一行,这个过程可能需要耗费较长的时间。

    为了提高查询效率,可以考虑在invoice_number字段上创建索引,使得查询能够更快地定位到需要的数据,还可以使用EXPLAIN语句来分析查询的执行计划,查看是否存在潜在的性能问题。

    2024-02-08 21:36:42
    赞同 展开评论 打赏

阿里云关系型数据库主要有以下几种:RDS MySQL版、RDS PostgreSQL 版、RDS SQL Server 版、PolarDB MySQL版、PolarDB PostgreSQL 版、PolarDB分布式版 。

相关电子书

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