2011-11-23 34 views
164

Khi tôi gửi một lô (ví dụ: thực hiện truy vấn) trong SSMS, tôi thấy thời gian thực hiện trong thanh trạng thái. Có thể cấu hình SSMS để hiển thị thời gian truy vấn với độ phân giải mili giây không?SQL Server Management Studio, cách nhận thời gian thực hiện xuống một phần nghìn giây

Dưới đây là thanh tôi đang nói về với phần quan tâm vòng tròn màu đỏ:

set statistics time on 

-- your query 

set statistics time off 

Điều đó sẽ có kết quả:

enter image description here

+3

Không thực sự trả lời câu hỏi của bạn, nhưng bạn có thể sử dụng SQL Server Profiler (công cụ ghi nhật ký) để kiểm tra thời lượng truy vấn của bạn. Thời lượng được tính bằng mili giây. – AGuyCalledGerald

Trả lời

273

Những gì bạn muốn làm điều này là trông giống như thế này trong cửa sổ Tin nhắn của bạn:

Thời gian thực thi của SQL Server es: Thời gian CPU = 6 ms, thời gian trôi qua = 6 ms.

+0

Nhưng điều này đặt thời gian trong cửa sổ Tin nhắn, điều đó có nghĩa là tôi phải tự lật nó sau khi thực hiện truy vấn. Ngoài ra, kết quả dường như không có ý nghĩa, ví dụ: CPU time = 1357 ms, thời gian trôi qua = 169 ms. Làm thế nào để thêm lên, ngay cả khi tôi có 8 lõi với siêu phân luồng (tức là, 16 ảo)? –

+0

@MichaelGoldshteyn Thật không may, tôi không nghĩ rằng có một cách để sửa đổi thời gian trôi qua trong thanh trạng thái cho SSMS. Tôi nghĩ rằng tùy chọn duy nhất của bạn để nắm bắt nó vào 'ms' sẽ là bài viết của tôi. –

+1

@MichaelGoldshteyn vì lý do tại sao thời gian CPU của bạn lớn hơn, đó là bởi vì bạn có CPU đa lõi hoặc hyperthreaded. –

44

Tôi đã đấu tranh với điều đó cho đến khi tôi tìm thấy này ...

http://blog.sqlauthority.com/2009/10/01/sql-server-sql-server-management-studio-and-client-statistics/

Ngoài ra, nếu bạn mở cửa sổ Properties bạn có thể tìm thấy một số "Kết nối thời gian trôi qua" kỳ diệu mà có thể cung cấp cho bạn một số thời gian thực hiện ... Hy vọng nó sẽ giúp ...

+8

Phần liên quan đến cửa sổ Thuộc tính thực sự là câu trả lời cho chủ đề này. "Thời gian trôi qua" đang ngồi đó nhìn chằm chằm vào mặt bạn. – radpin

14

Để có được thời gian thực hiện như là một biến trong proc của bạn:

DECLARE @EndTime datetime 
DECLARE @StartTime datetime 
SELECT @StartTime=GETDATE() 

-- Write Your Query 


SELECT @EndTime=GETDATE() 

--This will return execution time of your query 
SELECT DATEDIFF(ms,@StartTime,@EndTime) AS [Duration in millisecs] 

VÀ thấy điều này

Measuring Query Performance : "Execution Plan Query Cost" vs "Time Taken"

+1

Datepart NS đại diện cho nano giây, tính bằng mili giây sử dụng MS –

0

Bạn có thể thử mã này:

USE AdventureWorks2012; 
GO 
SET STATISTICS TIME ON; 
GO 
SELECT ProductID, StartDate, EndDate, StandardCost 
FROM Production.ProductCostHistory 
WHERE StandardCost < 500.00; 
GO 
SET STATISTICS TIME OFF; 
GO 
2

Tôi không biết về việc mở rộng thanh thông tin.

Nhưng bạn có thể đặt thời gian được đặt làm mặc định cho tất cả truy vấn hiển thị trong tab "Tin nhắn".

Khi trong cửa sổ Truy vấn, hãy chuyển đến mục Trình đơn truy vấn, chọn "tùy chọn truy vấn", sau đó chọn "nâng cao" trong nhóm "Thực thi" và chọn hộp kiểm "set statistics time"/"set statistics statistics". Các giá trị này sau đó sẽ hiển thị trong vùng thông báo cho từng truy vấn mà không cần phải nhớ đặt số liệu thống kê cài đặt và tắt.

Bạn cũng có thể sử dụng phím Shift + Alt + S để bật thống kê khách hàng bất cứ lúc nào

87

Bật Khách hàng kê bằng cách thực hiện một trong các cách sau:

  • Menu: Query> Bao gồm khách hàng kê
  • Thanh công cụ: Nhấp vào nút (bên cạnh Bao gồm Thời gian thực thi thực tế)
  • Bàn phím: Shift-Alt-S

Sau đó, bạn sẽ nhận được một tab mới ghi lại thời gian, dữ liệu IO và hàng nghìn lần cho (tối đa) 10 lần xuất hiện cuối cùng (cộng với số trung bình!):

enter image description here

+0

Nó giống như câu trả lời của @Ymagine First từ tháng 11 năm2012. Xem câu trả lời ở trên ... –

+0

Trang web đó (trớ trêu thay) có lỗi SQL tại thời điểm đó, vì vậy tôi đã trích xuất thông tin chính từ bộ nhớ cache của Google và được đăng dưới dạng câu trả lời mới. Tôi không có ý định ăn cắp tín dụng và có lẽ tôi nên thay đổi câu trả lời ban đầu. – NickG

+0

Trên thực tế, có vẻ như tôi không có đủ điểm đại diện để chỉnh sửa câu hỏi, vì vậy đó có thể là lý do tôi không làm điều đó. – NickG

3

tôi là sau khi điều tương tự và tình cờ liên kết sau đó là rực rỡ:

http://www.sqlserver.info/management-studio/show-query-execution-time/

Nó cho thấy ba cách khác nhau để đo hiệu suất. Tất cả đều tốt cho sức mạnh của mình. Người tôi chọn cho là như sau:


DECLARE @ time1 DATETIME

DECLARE @ time2 DATETIME

SET @ time1 = getdate()

- Chèn truy vấn ở đây

SET @ Time2 = GETDATE()

SELECT DATEDIFF (MILLISE COND, @ time1, @ time2) AS Elapsed_MS


này sẽ hiển thị các kết quả từ truy vấn của bạn tiếp theo là khoảng thời gian phải mất để hoàn thành.

Hy vọng điều này sẽ hữu ích.

Các vấn đề liên quan