咖啡加糖_ 2021-06-08 10:56 采纳率: 66.7%
浏览 84
已采纳

sqlserver2016 百万级数据量的sql优化

情况说明:

表tab_testa、tab_testb、tab_testc,其中tab_testa百万级,tab_testb接近百万,tab_testc20W左右数据,三张表的主键都是uuid的,语句大概如下:

SELECT
    testa.id,
    testa.field1,
    testa.field2,
    testa.field3,
    testa.field4,
    testa.field5
    testb.field1,
    testc.field1,
    testc.field2,
    testc.field3

FROM
    tab_testa testa
LEFT JOIN tab_testb testb  ON testa.field1 = testb.field1
LEFT JOIN tab_testc testc ON testa.field1 = testc.field1
WHERE
    testa.field5 IN ('1')
AND testa.status IN (0, 3)
AND CONVERT (
    VARCHAR (100),
    testa.CREATE_TIME,
    23
) >= CONVERT (VARCHAR(100), DATEADD(DAY, -20, GETDATE()), 23)
AND CONVERT (
    VARCHAR (100),
    testa.CREATE_TIME,
    23
) <= CONVERT (VARCHAR(100), GETDATE(), 23)
ORDER BY
    CREATE_TIME DESC offset 5000 ROWS FETCH NEXT 10 ROWS ONLY  ;

 

目前问题如下:

1、三张表的连接字段已经加上索引,testa的CREATE_TIME也加上索引

2、分页采用的是offset 5000 ROWS FETCH NEXT 10 ROWS ONLY 这种方式,越往后越慢;

3、count(*) 函数也很慢(因为前端分页需要总条数)

请问这个sql如何优化好

 

 

  • 写回答

1条回答 默认 最新

  • li.siyuan 2021-06-08 11:05
    关注

    物化视图,定时更新,数据虽然会有延迟但好过现在

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度