今天同事問了我一個SQL的問題,關於SQL Server內部儲存結構的,我覺得挺有意思,所以寫下這篇部落格討論並歸納了一下。問題是這樣的:首先我們建立兩張表,一張表的列長度是4039位元組,另一張表的長度是4040位元組,他們就只有一個位元組的差距,比如以下建立表的SQL:Code highlighting produced by Actipro CodeHighlighter
1.對查詢進行最佳化,應盡量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。 2.應盡量避免在 where 子句中對欄位進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描,如: select id from t where num is null 可以在num上設定預設值0,確保表中num列沒有null值,然後這樣查詢: select id from t where
有些情況可能用下資料表值函式,資料表值函式主要用於資料計算出來返回結果集,可以帶參數(和視圖的一個大的區別),如果函數中沒有過多的邏輯處理,如變數的定義,判斷等,資料表值函式返回結果集可以簡單向下面這麼寫: 複製代碼 代碼如下:CREATE FUNCTION Fun_GetReportNews(@type varchar(10))RETURNS TABLEAS RETURN( SELECT TPR_ID,TPR_Title,TPR_Date FROM TP_ReportNews WHERE
use master --必須在master資料庫中建立goif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_lockinfo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[p_lockinfo]GO/**//*--處理死結 查看當前進程,或死結進程,並能自動殺掉死進程
Windows整合安全驗證:1、與Sql Server 2005為"server=SAIXIN-1F662FDD\SAIXIN;database=BLOGDB;integrated security=SSPI"其中的server為Sql伺服器名稱,不是電腦名稱或local、localhost。2、與Sql Server 2000為"Server=(local);Initial Catalog=dbtest;Integrated Security=True";SQL身分識別驗證:1.與Sql
==產生數字區間隨機數==--建立視圖 create view myview as select re=rand() --自訂函數:取得指定範圍的隨機數 create function mydata( @a int, @b int) returns decimal(38,0) as begin declare @r decimal(38,0) select @r=cast(re*(@b-@a)+@a as decimal(38,0)) from myview return(@r) end go
Here is a quick summary of the steps to add Stored Procedures to the .NET IDE:Install VS.NET on client machineInstall VSS on client machineOpen the VS.NET IDE and make sure to enable "version control" on the "Tools | Options | Database tools" tab.