基于使用从这篇文章获得的这个非常有用的SQL获取查询执行统计信息最常执行的存储过程 - 堆栈溢出:
SELECT TOP 100
qt.TEXT AS 'SP Name',
SUBSTRING(qt.text, qs.statement_start_offset/2, CASE WHEN (qs.statement_end_offset = -1) THEN LEN(qt.text) ELSE (qs.statement_end_offset - qs.statement_start_offset)/2 END) AS actual_query,
qs.execution_count AS 'Execution Count',
qs.total_worker_time/qs.execution_count AS 'AvgWorkerTime',
qs.total_worker_time AS 'TotalWorkerTime',
qs.total_physical_reads AS 'PhysicalReads',
qs.creation_time 'CreationTime',
qs.execution_count/DATEDIFF(Second, qs.creation_time, GETDATE()) AS 'Calls/Second'
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE qt.dbid = (SELECT dbid
FROM sys.sysdatabases
WHERE name = 'BSP')
ORDER BY qs.total_worker_time/qs.execution_count DESC
Run Code Online (Sandbox Code Playgroud)
我如何完全清除这些执行统计信息并从头开始?
这将特别有用,因为开发错误和测试已经导致例程被调用通常很多次,从而无视真实的使用级别.
我理解这些函数之间的区别,但我的问题是,当检查单个空值时ISNULL会比使用COALESCE更快吗?
例如
COALESCE(SELECT TOP 1 SomeValue FROM SomeTable, 0)
Run Code Online (Sandbox Code Playgroud)
VS
ISNULL(SELECT TOP 1 SomeValue FROM SomeTable, 0)
Run Code Online (Sandbox Code Playgroud) 我有一个包含格式化文本的文本文件(txt)(只是换行符,回车符和制表符)它还包含德语字符.
我想在T-SQL中使用批量插入注释将文本文件读入数据库表中的一个字段.
我运行了这个命令:
CREATE TABLE #MyTestTable (
MyData NVARCHAR(MAX)
)
BULK INSERT [#MyTestTable]
FROM 'D:\MyTextFile.txt'
SELECT * FROM #MyTestTable
Run Code Online (Sandbox Code Playgroud)
问题是它将文本文件的每一行读入Temp表中的新行.我希望它将整个文件(格式化和所有)读入一行.
此外,德语字符似乎丢失 - 由结果视图中的不可打印字符默认值替换.
任何想法我怎么能实现这个?
谢谢.