SQL Server本身提供了這麼一個DMV來返回這些資訊,它就是sys.dm_exec_sessions 。 比如在我的機器上做一下查詢:複製代碼 代碼如下:SELECT * FROM sys.dm_exec_sessions WHERE host_name IS NOT NULL 我們也可以根據登入名稱來分組:複製代碼 代碼如下:SELECT login_name ,COUNT(session_id) AS session_count FROM
實現以上要求,我們可以用以下幾種方式,但是效率卻相差很遠。 首先我們在Order表中,建立一個索引: CREATE UNIQUE INDEX idx_eid_odD_oidD ON Orders(EmployeeID,OrderDate DESC,OrderID DESC) 多個OrderId是為了在OrderData相同的情況下,按訂單號倒序,是個輔助屬性。 方法1: 複製代碼 代碼如下:SELECT EmployeeID,OrderID FROM Orders AS O1
SQL Server推薦使用 SET 而不是 SELECT 對變數進行賦值。當運算式返回一個值並對一個變數進行賦值時,推薦使用 SET 方法。下表列出 SET 與 SELECT 的區別。請特別注意紅色部分。 setselect同時對多個變數同時賦值不支援支援運算式返回多個值時出錯將返回的最後一個值賦給變數運算式未傳回值變數被賦null值變數保持原值下面以具體樣本來說明問題:create table chinadba1(userid int ,addr varchar(128)
為什麼要同步SQL Server 2000 資料庫,它都用在什麼場合SQL Server 2000 資料庫同步配置的原理從0開始一步一步配置SQL Server 2000 資料庫同步,非常細已經非常熟練,可以看精品版SQL Server 2000 資料庫同步配置 配置SQL Server 2000 資料庫同步時的 常見問題 為什麼要同步SQL Server 2000
複製代碼 代碼如下:--方式一 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[USP_ProcedureWithTransaction_Demo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[USP_ProcedureWithTransaction_Demo] GO -- ====================
1.計算每個人的總成績並排名 select name,sum(score) as allscore from stuscore group by name order by allscore 2.計算每個人的總成績並排名 select distinct t1.name,t1.stuid,t2.allscore from stuscore t1,( select stuid,sum(score) as allscore from stuscore group by stuid)t2where t1
但是用IN的SQL效能總是比較低的,從SQL執行的步驟來分析用IN的SQL與不用IN的SQL有以下區別: SQL試圖將其轉換成多個表的串連,如果轉換不成功則先執行IN裡面的子查詢,再查詢外層的表記錄,如果轉換成功則直接採用多個表的串連方式查詢。由此可見用IN的SQL至少多了一個轉換的過程。一般的SQL都可以轉換成功,但對於含有分組統計等方面的SQL就不能轉換了。 推薦在業務密集的SQL當中盡量不採用IN操作符 NOT IN 此操作是強列推薦不使用的,因為它不能應用表的索引。推薦用NOT
=================分頁========================== 複製代碼 代碼如下:/*分頁尋找資料*/ CREATE PROCEDURE [dbo].[GetRecordSet] @strSql varchar(8000),--查詢sql,如select * from [user] @PageIndex int,--查詢當頁號 @PageSize int--每頁顯示記錄 AS set nocount on declare @p1 int declare
使用javascript的數組來計算,代碼如下: 複製代碼 代碼如下:use tempdb go if (object_id ('fn_getArray' ) is not null ) drop function dbo . fn_getArray go create function fn_getArray (@ inStr1 varchar (8000 ), @ inStr2 varchar (8000 )) returns varchar (8000 ) as begin