實現以上要求,我們可以用以下幾種方式,但是效率卻相差很遠。 首先我們在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
SQLServer中有三個關鍵字可以修改比較子:All、Any和Some,其中Some和Any等價。官方的參考文檔http://technet.microsoft.com/zh-cn/library/ms187074%28SQL.90%29.aspx 他們作用於比較子和子查詢之間,作用類似Exists、not exists、in、not in以及其他邏輯意義,這些文法同樣被SQLServer2000支援但是很少看到有人用它們。複製代碼 代碼如下:set nocount on use
E盤根目錄建立一個Excel檔案aa.xls後測試如下代碼複製代碼 代碼如下:use tempdb go if (object_id ('udf_getExcelTableNames' ) is not null ) drop function dbo .udf_getExcelTableNames go create function udf_getExcelTableNames (@filename varchar (1000 ))returns @t
設定sqlServer使用ROW_NUMBER時不排序 --1.看到NHibernate是這樣寫的分頁,感覺寫起來比較容易理解(應該不會有效率問題吧?) --with只是定一個別名? [sql] with query as (select ROW_NUMBER() over(order by (select 0)) AS ROWNUM, * FROM Product) select * from query where ROWNUM BETWEEN 5 AND 10
網上提供了很多sqlserver發送郵件的文章,轉載居多,大部分介紹win2000+outlook2003環境,在作業系統和office已經更新換代的今天,意義不大。現在工作中碰到了需要利用sqlserver發送郵件的問題,特整理文字如下:目的:利用Sqlserver代理的郵件會話建立操作員監控作業完成情況測試環境: 作業系統:windows 2003/windows xp OutLook: OutLook 2003 測試的電子郵件:
第一種方案、最簡單、普通的方法:複製代碼 代碼如下:SELECT TOP 30 * FROM ARTICLE WHERE ID NOT IN(SELECT TOP 45000 ID FROM ARTICLE ORDER BY YEAR DESC, ID DESC) ORDER BY YEAR DESC,ID DESC 平均查詢100次所需時間:45s第二種方案:複製代碼 代碼如下:SELECT * FROM ( SELECT