标签: sql-server

过滤时Sql视图慢的可能原因

我在 Sql Server 2008 中有一个视图,当只执行一个:

SELECT * FROM [Table]
Run Code Online (Sandbox Code Playgroud)

将返回大约 40000 行乘 130 列。以下是 6 次运行时的客户端统计信息(平均大约 7 秒):

客户统计(未过滤)

让我们假设这些时间都很好,当应用过滤器时问题就出现了。以下是 6 次运行时的客户端统计信息(平均大约 6 秒):

客户端统计(过滤)

有一些事情令人讨厌/令人沮丧:

  1. 时差平均只有1300ms左右。
  2. 过滤后的版本中仅返回 16 行。
  3. 我正在过滤的列是一个 int 列,它具有适当的索引。
  4. 过滤后的 SQL 看起来像:

    SELECT * FROM [Table] Where [IntColumn] = 15 -- returns 16 rows
    
    Run Code Online (Sandbox Code Playgroud)

我来找你们是因为我不知道为什么过滤后的版本可能需要这么长时间。SQL 引擎从执行开始就找到这 16​​ 行,然后计算/查找 130 列的值应该非常简单。我的问题真的是:

  1. 什么会导致这种情况?
  2. 我应该寻找什么来尝试解决这个问题?

以下是匿名执行计划(.zip 中的 .sqlplan):

  1. 匿名 Sql 计划 (Zippyshare)
  2. 匿名 Sql 计划 (Dropbox)

sql-server-2008 sql-server

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

Sql Server 中的带宽使用

我们公司有一个中央 Sql Server 数据库,该数据库连接到许多应用程序(Web、后端/前端服务、后台等)。该数据库托管在带宽昂贵的小国(为了税收优势)。

有没有办法详细了解带宽使用情况?例如每个应用程序、每个存储过程、每个登录如何发送字节......

我想在 Sql Server 上监视它,因为我不能在客户端执行此操作(客户端太多,不适合为此更改客户端代码)

monitoring sql-server

1
推荐指数
1
解决办法
4407
查看次数

TRUNCATE TABLE 会影响 Sql Server 中的隔离级别吗?

因为我正在处理将 SQL SERVER 作为数据库的项目......我在我的项目中维护隔离级别,我为我的项目启用了快照隔离级别......

由于我必须进行一些脏读,我正在使用设置查询它。我已经SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED.在存储过程中实现了它......这是我存储过程的简短版本

ALTER PROCEDURE [dbo].[proc_ReadDirtyData]
@id INT,
@mode VARCHAR(5)

AS
BEGIN
    --Read Dirty Data
    IF (@mode = 'RDD')
    BEGIN
            SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
            SELECT * FROM tbl_transaction
            WHERE id = @id;--@id foreign key in tbl_transaction.
                           --This read has been done during the transaction from C# Apps
    END
END
Run Code Online (Sandbox Code Playgroud)

在我的 C# 应用程序中,保持以下结构

snapshot transaction start

stage1 : tblmaster --generates id
stage2 :tblchild --inserts the data with above id as …
Run Code Online (Sandbox Code Playgroud)

sql-server transaction truncate isolation-level

1
推荐指数
1
解决办法
3044
查看次数

如何在不更改日期部分的情况下在 Datetimeoffset 列中设置 timeoffset

有什么办法来设置timeoffset一个中datetimeoffset柱直接,而不必使用SWITCHOFFSET其改变的日期呢?

在下面的帖子中,我们可以看到SWITCHOFFSET将相应地更改日期以及设置时间偏移(这不是我们想要的):http : //blog.sqlauthority.com/2010/07/15/sql-server-datetime-功能开关偏移示例/

例如,我的日期值为“2013-02-10”,并希望将其记录在不同的时区,而不会丢失“2013-02-10”。只需将 timeoffset 设置为需要的值,例如:+11、-4、-6 等。

是否可以?

谢谢。

sql-server t-sql sql-server-2008-r2

1
推荐指数
1
解决办法
8305
查看次数

实时监控 SQL Server 上的 SQL 语句

如何监控我的 SQL Server 正在运行的 SQL 语句,是否可以仅使用 SQL Server 而没有第三方工具?

作为替代方案,有人可以推荐任何可以通过 ODBC 连接监视运行语句的免费工具吗?

monitoring sql-server

1
推荐指数
1
解决办法
158
查看次数

存储大量简单数据的建议

我希望抓取大量网页 (500,000,000,000) 记录并能够存储链接结构以备日后使用。我计划布置数据库的方式如下:

2张桌子

表:页面

ID            URL - Max Length = 2048 chars
----------    -------------------------------
1             http://www.site1.com/page.php
2             http://www.site2.com/page-abc.php
3             http://www.site3.com/page-1.php
4             http://www.site4.com/page-cd.php
5             http://www.site5.com/page-nice.php
6             http://www.site6.com/page-some.php
7             http://www.site7.com/page-hrmm.php
8             http://www.site8.com/page-stack.php
9             http://www.site9.com/page-ex.php
10            http://www.site10.com/page-dba.php
Run Code Online (Sandbox Code Playgroud)

表:链接

Page          Links
----------    -------------------------------
2             1
3             1
4             1
5             1
6             1
7             1
8             1
8             9
9             1
10            1
Run Code Online (Sandbox Code Playgroud)

基本上,我将能够看到哪些网页链接到每个网站的重复/几级深度。我想绘制一个大型网站网络及其链接模式。

所以我需要知道是否有更好的方法来这样做,也许还有一些关于如何设计数据库结构/系统的建议。我计划从 PostgreSQL 开始,因为我已经使用过它,但是有了这么多的数据,我对任何事情都持开放态度。

database-design sql-server

1
推荐指数
1
解决办法
258
查看次数

SQL Server xml 性能

我有一个 21 列的表。大多数是数字,其余的是nvarchar。

我需要添加 4 列,这些列将包含每行的 XML 数据。每行的 XML 数据可以是 200 到 2,000 行。

问题是:

  • 将 XML 类型的列添加到同一个表是否会改变查询该表的速度?

  • 当我将 xml 类型的列添加到另一个表并在执行查询时连接两个表时,有什么性能优势?

  • 对 XML 数据进行编码以缩小它并在应用程序中对其进行解码是否更好?

performance xml sql-server sql-server-2008-r2

1
推荐指数
1
解决办法
1706
查看次数

移动模型数据库后 SQL Server 2008 R2 无法启动

移动模型数据库后,SQL Server 2008 R2 无法启动。有任何想法吗?错误:945,严重性:14,状态:2。有什么想法吗?Sql 2008 R2 不会以trace -f -T3608 或单用户模式-m 启动。需要参数来启动短信以将模型移回原处。

sql-server sql-server-2008-r2 system-databases

1
推荐指数
2
解决办法
2923
查看次数

无法启动 SQL 服务

我在启动 SQL 服务时遇到问题。目前,由于以下原因,它无法启动:

FileMgr::StartLogFiles:创建或打开文件“E:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\modellog.ldf”时发生操作系统错误 2(系统找不到指定的文件。)。诊断并更正操作系统错误,然后重试该操作。

这里的问题在于这个 .ldf 文件不在 E 驱动器上。没有E:驱动器。该文件位于 F: 驱动器上。

我找不到任何地方可以告诉 SQL 更改此设置。我无法删除/移动/分离/等数据库,因为我什至无法启动服务以进行连接。

卷移动后,这发生在 3 个不同的 SQL 实例上。有任何想法吗?

SQL 2008

sql-server

1
推荐指数
1
解决办法
8206
查看次数

ALTER DATABASE 命令设置日志文件增长和大小?

创建数据库时是否可以通过脚本更改LOG文件?我需要设置文件大小、增长等,但不指定要创建数据库的位置。例如

CREATE DATABASE [NewDatabase]
GO
ALTER DATABASE [NewDatabase] 
    MODIFY FILE
    (SIZE = 10MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 1MB);
GO
**ALTER DATABASE [NewDatabase]
    MODIFY LOG
    (MAXSIZE = 200MB, 
    FILEGROWTH = 1MB 
    );
GO**
Run Code Online (Sandbox Code Playgroud)

sql-server

1
推荐指数
1
解决办法
4万
查看次数