![]() |
1
3
看起来您的monthlyTarget表中缺少一些列,即“targetDate”列。 除了每个人都已经说过的索引之外,有时候分而治之的方法真的会有帮助。与其将1966177行表连接到400310行表中,不如创建一个小的临时表,然后将它们连接在一起:
上面的查询创建了两个中间表,中间表应包含与您的销售员表相同数量的记录。加入他们很简单:
如果您发现自己需要一直按月提取数据,请将代码移到视图中。 Pivot需要SQL Server 2005或更高版本,它通常是一个非常有用的运算符。希望SQLServer2008允许用户一次在多个列上进行透视,这将导致比上面显示的查询更简单。 使用SQL Server 2000: Pivot是语法Sugar。例如,
变成
|
![]() |
2
4
好吧,如果您不想考虑索引,那么您将总是执行完整的表扫描,并且性能不会得到提高。 |
![]() |
3
3
检查表上的索引是否正确。几乎不可能不看数据库本身就说出来,但是99%的慢速连接时间是由于不正确或缺少表索引造成的。 |
![]() |
4
1
你必须考虑索引。无论您如何编写查询,DB引擎都别无选择,只能扫描每个表以查找联接,它很可能会一次又一次地这样做。你别无选择。 如果您不想因为无法控制数据库而混乱索引,请考虑将数据导出到本地SQL Express实例。 甚至可以将数据导出到平面文件,通过Salesmancode对文件进行排序,并编写一个简单的程序来读取和匹配这些文件,都会更快。 |
![]() |
5
1
如果不解雇一批销售人员,考虑以下选项:
|
![]() |
6
0
你有过滤器吗?您可以将一些部分结果存储在临时表中,然后在减小数据大小后连接到其余数据吗? |
![]() |
7
0
如果索引不是一个选项,唯一加快速度的方法就是把它放在一个更快的服务器上。不过,有件事告诉我索引会更容易。 |
![]() |
John D · 需要为NULL或NOT NULL的WHERE子句 8 月前 |
![]() |
Marc Guillot · 记录值时忽略冲突 9 月前 |
![]() |
Fachry Dzaky · 正确使用ROW_NUMBER 9 月前 |
![]() |
TriumphTruth · 从满足特定条件的数据集中选择1行 9 月前 |