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如何优化好

 

 

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