通州北大青鳥(niǎo)學(xué)術(shù)部:SQL Server查詢(xún)語(yǔ)句設(shè)計(jì)實(shí)例解讀

通州北大青鳥(niǎo)學(xué)術(shù)部提供:在執(zhí)行一個(gè)查詢(xún)時(shí),用一個(gè)where子句來(lái)限制必須處理的行數(shù),除非完全需要,否則應(yīng)該避免在一個(gè)表中無(wú)限制地讀并處理所有的行。

例如下面的例子,
select qty from sales where stor_id=7131

是很有效的比下面這個(gè)無(wú)限制的查詢(xún)
select qty from sales

避免給客戶(hù)的最后數(shù)據(jù)選擇返回大量的結(jié)果集。允許SQL Server運(yùn)行滿(mǎn)足它目的的函數(shù)限制結(jié)果集的大小是更有效的。(通州北大青鳥(niǎo)

這能減少網(wǎng)絡(luò)I/O并能提高多用戶(hù)的相關(guān)并發(fā)時(shí)的應(yīng)用程序性能。因?yàn)閮?yōu)化器關(guān)注的焦點(diǎn)就是where子句的查詢(xún),以利用有用的索引。在表中的每一個(gè)索引都可能成為包括在where子句中的侯選索引。為了最好的性能可以遵照下面的用于一個(gè)給定列column1的索引。

在表中的column1列上有一個(gè)單索引
在表中有多索引,但是column1是第一個(gè)索引的列不要在where子句中使用沒(méi)有column1列索引的查詢(xún)語(yǔ)句,并避免在where子句用一個(gè)多索引的非第一個(gè)索引的索引。這時(shí)多索引是沒(méi)有用的。(通州北大青鳥(niǎo)
For example, given a multicolumn index on the au_lname, au_fname columns of the authors table in the pubs database,

下面這個(gè)query語(yǔ)句利用了au_lname上的索引
SELECT au_id, au_lname, au_fname FROM authors
WHERE au_lname = ’White’
AND au_fname = ’Johnson’
SELECT au_id, au_lname, au_fname FROM authors
WHERE au_lname = ’White’
 
下面這個(gè)查詢(xún)沒(méi)有利用索引,因?yàn)樗褂昧硕嗨饕姆堑谝粋(gè)索引的索引(通州北大青鳥(niǎo)
SELECT au_id, au_lname, au_fname FROM authors
WHERE au_fname = ’Johnson’
通州北大青鳥(niǎo)

北大青鳥(niǎo)網(wǎng)上報(bào)名
北大青鳥(niǎo)招生簡(jiǎn)章