環(huán)境和版本:.Net 6 + SqlSuger 5.1.4.*? ?,數(shù)據(jù)庫是mysql 5.7 ,數(shù)據(jù)量在2000多條左右
業(yè)務(wù)是一個非常簡單的查詢,代碼如下:
var list = _dbClient.Queryable<tb_name>()
.ToList();
tb_name 下配置了一對多的關(guān)系導(dǎo)航,但是執(zhí)行時沒有include導(dǎo)航屬性,當執(zhí)行上述代碼時,查詢非常慢,甚至會超時報錯:
The Command Timeout expired before the operation completed.?
控制臺打印了sql,在Navicate里執(zhí)行也是很快的,非常的詭異,但代碼里執(zhí)行就查詢不了,控制臺記錄的sql如下:
隨后,我查詢了數(shù)據(jù)庫的事務(wù)日志,發(fā)現(xiàn)也是正常的,emmm事情陷入了僵局.....
然后突然想到只查詢一個字段試試,發(fā)現(xiàn)執(zhí)行非??欤土ⅠR把單個字段換成了整個對象,執(zhí)行速度也非常的快,代碼如下:
var list = _dbClient.Queryable<tb_name>()
.Select(x => x)
.ToList();
控制臺生成的sql為:select * from tb_name文章來源:http://www.zghlxwxcb.cn/news/detail-726405.html
emmmm事情再次變得詭異,明明sql沒什么差別,除了 * 和 列出各屬性,按照我之前的了解,查詢時使用字段名,比 select * 的效率是要高的,不知道sqlSugar內(nèi)部的執(zhí)行機制到底是怎么樣的,為什么會有這個問題,現(xiàn)在沒時間深究,先記錄一下,希望能給遇到同樣問題的小伙伴提供參考。文章來源地址http://www.zghlxwxcb.cn/news/detail-726405.html
到了這里,關(guān)于記一次 .Net+SqlSugar 查詢超時的問題排查過程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!