小编Smu*_*mur的帖子

SQL Select 执行时间过长

这是从临时表中进行的简单选择,在其主键上加入现有表,两个子选择使用 top 1 引用连接表。

在代码中:

SELECT
    TempTable.Col1,
    TempTable.Col2,
    TempTable.Col3,
    JoinedTable.Col1,
    JoinedTable.Col2,
    (
        SELECT TOP 1
            ThirdTable.Col1 -- Which is ThirdTable's Primary Key
        FROM
            ThirdTable
        WHERE
            ThirdTable.SomeColumn = JoinedTable.SomeColumn
    ) as ThirdTableColumn1,
    (
        SELECT TOP 1
            ThirdTable.Col1 -- Which is also ThirdTable's Primary Key
        FROM
            ThirdTable
        WHERE
            ThirdTable.SomeOtherColumn = JoinedTable.SomeColumn
    ) as ThirdTableColumn2,
FROM
    #TempTable as TempTable
LEFT JOIN
    JoinedTable
ON (TempTable.PKColumn1 = JoinedTable.PKColumn1 AND 
    TempTable.PKColumn2 = JoinedTable.PKColumn2)
WHERE
    JoinedTable.WhereColumn IN  (1, 3)
Run Code Online (Sandbox Code Playgroud)

这是我的查询的精确副本。

如果我删除两个子选择,它运行得很好而且很快。通过两个子选择,我每秒得到大约 100 条记录,这对于这个查询来说非常慢,因为它应该返回近一百万条记录。

我已经检查过是否每张表都有一个主键,他们都有。它们都有重要列的索引和统计信息,就像那些 WHERE 子句中的那些,以及 JOIN …

sql-server-2005 sql-server query statistics

10
推荐指数
2
解决办法
6万
查看次数

SQL Server 2008 R2 Express 的使用。请指教

我希望大家就以下情况给我提示和建议:

我们正在考虑将 Microsoft 的 SQL Server 2008 R2 Express 用于商业 Web 应用程序。

Web 应用程序不会有超过 10 个 CRUD,并且不会有很高的数据流量,它们都是简单的 Web 表单。关于数据的可扩展性,Web Application 基本上专注于员工数据,如个人信息、空缺控制和日常频率控制。

据我所知,我估计最多 5 个同时用户,产生数据流量。

而且,我们的员工表最多应该保存 100 条记录。

至于物理限制,我认为我们很好,因为我认为在接下来的十年里,最多 100 名员工不应生成 10 GB?但是因为我读到 Express 版本只管理 1 GB 的 RAM 并且只使用 1 个 CPU,所以我认为最好问一下。

在这种情况下,您认为它可以保持良好的响应和性能吗?

所以请建议使用 SQL Server 2008 R2 Express 或其他一些数据库管理器。请记住,它必须是免费的。

附加信息:

  • 视窗服务器 2008;

  • 4 GB 内存;

  • 1 TB 高清。

performance sql-server-2008 express-edition

4
推荐指数
3
解决办法
589
查看次数