咖啡加糖_ 2021-06-08 02: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 03:05
    关注

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

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

报告相同问题?

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部