SQL中清除緩存的方法以及JOIN和WHERE的先後關係

SQL中清除緩存的方法以及JOIN和WHERE的先後關係

這個很有用,特別是在查看執行計畫的時候,應該先清除緩存。否則有可能你看到的計畫或查詢時間不一定是真實的,因為SQL會利用緩存區的資料。

DBCC FREEPROCCACHE
從程序快取區中移除所有元素。

語法
DBCC FREEPROCCACHE

備註
使用 DBCC FREEPROCCACHE 可以清除程序快取區。釋放程序快取區可能會造成某個臨時性的 SQL 陳述式被重新編譯,而不是從快取區再利用。

結果集
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

權限
DBCC FREEPROCACHE 權限僅預設為 sysadmin 和 serveradmin 伺服器固定角色的成員,且不可轉讓。

checkpoint
dbcc freeproccache
dbcc dropcleanbuffers

select   a.*,b.*   from   a   inner   join   b   on   a.id=b.aid   WHERE   a.workdate='20060201'  
执行计划会先进行各个表的filter当然对a表是用a.workdate='20060201'这个条件进行了!  
接着两个表会有关联操作逻辑运算是关联,但是物理运算会根据你的b表中记录数和a表通过a.workdate='20060201'过滤完的记录数的比例不同而不同!如果两个记录集数量相差较大,通常会使用nestloop。如果记录数相差不大,并且非常多,会使用hash   join等物理连接操作!  
你能做的是为a.workdate建立非聚集索引,两个表id最好是聚集索引。因为你的select谓词中都是*能不能指明具体的字段?越少越好!

Transact-SQL 新增與加強的功能
Microsoft® SQL Server™ 2000 中的 Transact-SQL,提供了新增與加強的陳述式 (Statement)、預存程序 (Stored Procedure)、函數 (Function)、資料型別 (Data Type)、DBCC 陳述式和資訊結構描述檢視表 (Information Schema View)。

資料型別
新增的資料型別

資料庫主控台命令 (DBCC)
新增的命令

DBCC CHECKCONSTRAINTS    DBCC DROPCLEANBUFFERS

DBCC CLEANTABLE    DBCC FREEPROCCACHE

DBCC CONCURRENCYVIOLATION    DBCC INDEXDEFRAG

加強的命令

DBCC CHECKALLOC    DBCC CHECKFILEGROUP

DBCC CHECKDB    DBCC SHOWCONTIG

DBCC CHECKTABLE  

函數
新增的函數

BINARY_CHECKSUM    fn_virtualfilestats

CHECKSUM    GETUTCDATE

CHECKSUM_AGG    HAS_DBACCESS

COLLATIONPROPERTY    IDENT_CURRENT

COUNT_BIG    INDEXKEY_PROPERTY

DATABASEPROPERTYEX    OBJECTPROPERTY

fn_helpcollations    OPENDATASOURCE

fn_listextendedproperty    OPENXML

fn_servershareddrives    ROWCOUNT_BIG

fn_trace_geteventinfo    SCOPE_IDENTITY

fn_trace_getfilterinfo    SERVERPROPERTY

fn_trace_getinfo    SESSIONPROPERTY

fn_trace_gettable    SQL_VARIANT_PROPERTY

資訊結構描述檢視表
新增的資訊結構描述檢視表

PARAMETERS    ROUTINE_COLUMNS

ROUTINES  

複寫預存程序
新增的複寫預存程序

sp_addmergealternatepublisher    sp_getqueuedrows

sp_addscriptexec    sp_getsubscriptiondtspackagename

sp_adjustpublisheridentityrange    sp_helparticledts

sp_attachsubscription    sp_helpmergealternatepublisher

sp_browsesnapshotfolder    sp_helpreplicationoption

sp_browsemergesnapshotfolder    sp_ivindexhasnullcols

sp_changesubscriptiondtsinfo    sp_marksubscriptionvalidation

sp_copysnapshot    sp_mergearticlecolumn

sp_disableagentoffload    sp_repladdcolumn

sp_dropanonymouseagent    sp_repldropcolumn

sp_dropmergealternatepublisher    sp_restoredbreplication

sp_enableagentoffload    sp_resyncmergesubscription

sp_getagentoffloadinfo    sp_vupgrade_replication

保留關鍵字
COLLATE、FUNCTION 和 OPENXML 是 SQL Server 2000 的保留關鍵字。

下列字彙是保留關鍵字。

AVG    COMMITTED

CONFIRM    CONTROLROW

COUNT    ERROREXIT

FLOPPY    ISOLATION

LEVEL    MAX

MIN    MIRROREXIT

ONCE    ONLY

PERM    PERMANENT

PIPE    PREPARE

PRIVILEGES    REPEATABLE

SERIALIZABLE    SUM

TAPE    TEMP

TEMPORARY    UNCOMMITTED

WORK  

陳述式
新增的陳述式

ALTER FUNCTION    DROP FUNCTION

CREATE FUNCTION  

加強的陳述式

ALTER DATABASE    CREATE TABLE

ALTER TABLE    CREATE TRIGGER

BACKUP    INDEXPROPERTY

COLUMNPROPERTY    OBJECTPROPERTY

CREATE INDEX    RESTORE

CREATE STATISTICS  

系統預存程序
新增的系統預存程序

sp_addextendedproperty    sp_delete_maintenance_plan_job

sp_add_log_shipping_database    sp_dropextendedproperty

sp_add_log_shipping_plan    sp_get_log_shipping_monitor_info

sp_add_log_shipping_plan_database    sp_helpconstraint

sp_add_log_shipping_primary    sp_helpindex

sp_add_log_shipping_secondary    sp_help_maintenance_plan

sp_add_maintenance_plan    sp_invalidate_textptr

sp_add_maintenance_plan_db    sp_remove_log_shipping_monitor

sp_add_maintenance_plan_job    sp_resolve_logins

sp_can_tlog_be_applied    sp_settriggerorder

sp_change_monitor_role    sp_trace_create

sp_change_primary_role    sp_trace_generateevent

sp_change_secondary_role    sp_trace_setevent

sp_create_log_shipping_monitor_account    sp_trace_setfilter

sp_define_log_shipping_monitor    sp_trace_setstatus

sp_delete_log_shipping_database    sp_updateextendedproperty

sp_delete_log_shipping_plan    sp_update_log_shipping_monitor_info

sp_delete_log_shipping_plan_database    sp_update_log_shipping_plan

sp_delete_log_shipping_primary    sp_update_log_shipping_plan_database

sp_delete_log_shipping_secondary    sp_xml_preparedocument

sp_delete_maintenance_plan    sp_xml_removedocument

sp_delete_maintenance_plan_db  

加強的系統預存程序

sp_helptrigger    sp_serveroption

sp_tableoption    sp_who

系統資料表
新增的系統資料表

logmarkhistory    MSsync_states

log_shipping_databases    sysdbmaintplan_databases

log_shipping_monitor    sysdbmaintplan_history

log_shipping_plan_databases    sysdbmaintplan_jobs

log_shipping_plan_history    sysdbmaintplans

log_shipping_plans    sysmergeschemaarticles

log_shipping_secondaries    sysopentapes

Mssub_identity_range