添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
.Net6环境下使用SqlSugar进行MySQL查询时,一对多关系导致查询缓慢,*号查询反而快速。作者分析了事务日志,发现SQL语法无误,但不解其执行机制,暂记问题待解,提供参考案例。 摘要生成于 ,由 DeepSeek-R1 满血版支持,

环境和版本:.Net 6 + SqlSuger 5.1.4.*   ,数据库是mysql 5.7 ,数据量在2000多条左右

业务是一个非常简单的查询,代码如下:

 var list = _dbClient.Queryable<tb_name>()
              .ToList();

tb_name 下配置了一对多的关系导航,但是执行时没有include导航属性,当执行上述代码时,查询非常慢,甚至会超时报错:

The Command Timeout expired before the operation completed.

控制台打印了sql,在Navicate里执行也是很快的,非常的诡异,但代码里执行就查询不了,控制台记录的sql如下:

随后,我查询了数据库的事务日志,发现也是正常的,emmm事情陷入了僵局.....

然后突然想到只查询一个字段试试,发现执行非常快,就立马把单个字段换成了整个对象,执行速度也非常的快,代码如下:

  var list = _dbClient.Queryable<tb_name>()
                .Select(x => x)
                .ToList();

控制台生成的sql为: select * from tb_name

emmmm事情再次变得诡异,明明sql没什么差别,除了 * 和 列出各属性,按照我之前的了解,查询时使用字段名,比 select * 的效率是要高的,不知道sqlSugar内部的执行机制到底是怎么样的,为什么会有这个问题,现在没时间深究,先记录一下,希望能给遇到同样问题的小伙伴提供参考。

. Net Core 2 . 0 (以下简称Core)正式版已经发布有一段时间了, 博主也第一时间尝鲜了, 相比Core 1 . 0和1 . 1类库支持方面提高了不少, 开发起来也方便快捷很多了 . 废话不多说了, 搭建开始 . (PS: 博主使用的的是VS2017最新版本, 操作系统使用的是Windows 10专业版 6 4位) Core的环境搭建我就不多说了, 贴个微软的官网, 自己去下载搭建一个就好了 .
0 . 前言 前一篇我们详细的介绍了 SqlSugar 的增删改查,那些已经满足我们在日常工程开发中的使用了。但是还有一点点在开发中并不常用,但是却非常有用的方法。接下来让我们一起来看看还有哪些有意思的内容。 1 . 不同寻常的 查询 之前介绍了针对单个表的 查询 ,同样也是相对简单的 查询 模式。虽然开发完全够用,但是难免会遇到一些特殊的情况。而下面这些方法就是为了解决这些意料之外。 1 . 1 多表 查询 SqlSugar 提供了一种特殊的多表 查询 方案,使用IQueryable接口 。来看看是怎样操作的吧: ISugarQuer
今天遇到一个 问题 ,有用户反应,在site上打开报表,一直loading,出不来结果。 遇到这种 问题 ,我立刻simulate用户使用Filter Condition, 问题 repro,看来不是偶然事件,通过SQL Server Profile Capture 到执行的 查询 语句。 Step1,奇怪的是,在SSMS中执行,SQL Server 很快返回结果,初 . . .
在线上 有些sql执行的比较慢,希望可以指定 超时 时间, 取消这个sql的执行,以下以druid为例为实现这个功能 jdbc 有2个 超时 时间, 一个是queryTimeout, 一个是socketTimeout, queryTimeout的作用是sql执行 超时 之后,可以取消这次的执行,底层原理是发送kill $id通知mysql来中断这个sql的执行 socketTimeout的作用主要是为了解 . . .
优化 SQL 查询 语句。这可能包括使用索引来加速 查询 ,删除无用的列或表,或者使用更高效的 查询 方法。 增加服务器资源。如果服务器的 CPU、内存或存储不足,可能会导致 查询 执行缓慢。在这种情况下,可以尝试增加服务器的资源,以提升 查询 的执行速度。 调整 超时 时间。如果 SQL 查询 执行 超时 ,可以尝试增加执行 超时 时间的限制,以让 查询 有更多的时间完成。 . . .
如果SQL的数据库越来越多,有时候会遇到读取 超时 ,死锁等一大堆 问题 ,按经验来说,数据结构设计不合理,经常使用视图等原因都有,那些怎么解决呢?   1、由于数据库设计 问题 造成SQL数据库新增数据时 超时 Microsoft OLE DB Provider for SQL Server 错误 '80040e31' [ODBC SQL Server