34,593
社区成员
发帖
与我相关
我的任务
分享
--1. 所有的连接字段必须要有索引
--2. 能快速减少结果集的字段必须建立索引,如:结算日期
--3. 对于状态比较少的不需要建立索引
--所谓取大放小, 对于价值不高的索引不急着建, 先建好了看效果,效果好就先用着, 不要一个劲地折腾。
--可以做监控, 有慢SQL 再具体事情具体分析 , 一口气吃不成个胖子
SELECT T1.流水号,
T1.单据状态,
T1.会员ID,
T2.姓名,
T2.微信,
T3.会员类型名称,
T3.会员等级,
T1.联系人,
T1.联系方式
T1.应收金额,
T1.实收金额,
T1.结算方式ID,
T4.项目ID,
T4.项目ID,
T5.名称,
T4.数量,
T4.金额,
T6.员工ID,
T7.姓名,
T8.职务名称
FROM 单据主表 T1 WITH (NOLOCK) INNER
JOIN T2.会员表
ON T1.会员ID = T2.ID
LEFT JOIN 会员类型表 T3 WITH (NOLOCK)
ON T2.类型ID = T3.ID
INNER JOIN 单据辅表 T4 WITH (NOLOCK)
ON T1.流水号 = T4.流水号
LEFT JOIN 项目和产品表 T5 WITH (NOLOCK)
ON T4.项目ID = T5.ID
INNER JOIN 员工绩效表 T6 WITH (NOLOCK)
ON T4.ID = T6.辅表ID
AND T4.流水号 = T6.流水号
INNER JOIN 员工表 T7 WITH (NOLOCK)
ON T6.员工ID = T7.ID
LEFT JOIN 职务表 T8 WITH (NOLOCK)
ON T7.职务ID = T8.ID
WHERE (T1.结算日期 >= '2017-1-1' AND T1.结算日期 <= '2017-2-1')
AND T1.单据状态 = 1
AND T1.结算状态 = 1
AND T5.类别ID IN (1, 3, 5, 7, 9)
AND T7.职务ID = 8
ORDER BY
T1.会员ID ASC,
T4.项目ID ASC,
T1.结算日期 asc