亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 27966 | 回復(fù): 9
打印 上一主題 下一主題

數(shù)據(jù)庫的查詢優(yōu)化技術(shù) [復(fù)制鏈接]

論壇徽章:
1
榮譽(yù)版主
日期:2011-11-23 16:44:17
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2003-06-03 14:00 |只看該作者 |倒序?yàn)g覽
1.合理使用索引  

    索引是數(shù)據(jù)庫中重要的數(shù)據(jù)結(jié)構(gòu),它的根本目的就是為了提高查詢效率。現(xiàn)在大多數(shù)的數(shù)據(jù)庫產(chǎn)品都采用IBM最先提出的ISAM索引結(jié)構(gòu)。索引的使用要恰到好處,其使用原則如下:  

●在經(jīng)常進(jìn)行連接,但是沒有指定為外鍵的列上建立索引,而不經(jīng)常連接的字段則由優(yōu)化器自動生成索引。  

●在頻繁進(jìn)行排序或分組(即進(jìn)行g(shù)roup by或order by操作)的列上建立索引。  

●在條件表達(dá)式中經(jīng)常用到的不同值較多的列上建立檢索,在不同值少的列上不要建立索引。比如在雇員表的“性別”列上只有“男”與“女”兩個(gè)不同值,因此就無必要建立索引。如果建立索引不但不會提高查詢效率,反而會嚴(yán)重降低更新速度。  

●如果待排序的列有多個(gè),可以在這些列上建立復(fù)合索引(compound index)。  

●使用系統(tǒng)工具。如Informix數(shù)據(jù)庫有一個(gè)tbcheck工具,可以在可疑的索引上進(jìn)行檢查。在一些數(shù)據(jù)庫服務(wù)器上,索引可能失效或者因?yàn)轭l繁操作而使得讀取效率降低,如果一個(gè)使用索引的查詢不明不白地慢下來,可以試著用tbcheck工具檢查索引的完整性,必要時(shí)進(jìn)行修復(fù)。另外,當(dāng)數(shù)據(jù)庫表更新大量數(shù)據(jù)后,刪除并重建索引可以提高查詢速度。  

2.避免或簡化排序  

應(yīng)當(dāng)簡化或避免對大型表進(jìn)行重復(fù)的排序。當(dāng)能夠利用索引自動以適當(dāng)?shù)拇涡虍a(chǎn)生輸出時(shí),優(yōu)化器就避免了排序的步驟。以下是一些影響因素:  

●索引中不包括一個(gè)或幾個(gè)待排序的列;  

●group by或order by子句中列的次序與索引的次序不一樣;  

●排序的列來自不同的表。  

為了避免不必要的排序,就要正確地增建索引,合理地合并數(shù)據(jù)庫表(盡管有時(shí)可能影響表的規(guī)范化,但相對于效率的提高是值得的)。如果排序不可避免,那么應(yīng)當(dāng)試圖簡化它,如縮小排序的列的范圍等。  

3.消除對大型表行數(shù)據(jù)的順序存取  

在嵌套查詢中,對表的順序存取對查詢效率可能產(chǎn)生致命的影響。比如采用順序存取策略,一個(gè)嵌套3層的查詢,如果每層都查詢1000行,那么這個(gè)查詢就要查詢10億行數(shù)據(jù)。避免這種情況的主要方法就是對連接的列進(jìn)行索引。例如,兩個(gè)表:學(xué)生表(學(xué)號、姓名、年齡……)和選課表(學(xué)號、課程號、成績)。如果兩個(gè)表要做連接,就要在“學(xué)號”這個(gè)連接字段上建立索引。  

還可以使用并集來避免順序存取。盡管在所有的檢查列上都有索引,但某些形式的where子句強(qiáng)迫優(yōu)化器使用順序存取。下面的查詢將強(qiáng)迫對orders表執(zhí)行順序操作:  

SELECT * FROM orders WHERE (customer_num=104 AND order_num>;1001) OR order_num=1008  

雖然在customer_num和order_num上建有索引,但是在上面的語句中優(yōu)化器還是使用順序存取路徑掃描整個(gè)表。因?yàn)檫@個(gè)語句要檢索的是分離的行的集合,所以應(yīng)該改為如下語句:  

SELECT * FROM orders WHERE customer_num=104 AND order_num>;1001  

UNION  

SELECT * FROM orders WHERE order_num=1008  

這樣就能利用索引路徑處理查詢。  

4.避免相關(guān)子查詢  

一個(gè)列的標(biāo)簽同時(shí)在主查詢和where子句中的查詢中出現(xiàn),那么很可能當(dāng)主查詢中的列值改變之后,子查詢必須重新查詢一次。查詢嵌套層次越多,效率越低,因此應(yīng)當(dāng)盡量避免子查詢。如果子查詢不可避免,那么要在子查詢中過濾掉盡可能多的行。  

5.避免困難的正規(guī)表達(dá)式  

MATCHES和LIKE關(guān)鍵字支持通配符匹配,技術(shù)上叫正規(guī)表達(dá)式。但這種匹配特別耗費(fèi)時(shí)間。例如:SELECT * FROM customer WHERE zipcode LIKE “98_ _ _”  

即使在zipcode字段上建立了索引,在這種情況下也還是采用順序掃描的方式。如果把語句改為SELECT * FROM customer WHERE zipcode >;“98000”,在執(zhí)行查詢時(shí)就會利用索引來查詢,顯然會大大提高速度。  

另外,還要避免非開始的子串。例如語句:SELECT * FROM customer WHERE zipcode[2,3] >;“80”,在where子句中采用了非開始子串,因而這個(gè)語句也不會使用索引。  

6.使用臨時(shí)表加速查詢  

把表的一個(gè)子集進(jìn)行排序并創(chuàng)建臨時(shí)表,有時(shí)能加速查詢。它有助于避免多重排序操作,而且在其他方面還能簡化優(yōu)化器的工作。例如:  

SELECT cust.name,rcvbles.balance,……other columns  

FROM cust,rcvbles  

WHERE cust.customer_id = rcvlbes.customer_id  

AND rcvblls.balance>;0  

AND cust.postcode>;“98000”  

ORDER BY cust.name  

如果這個(gè)查詢要被執(zhí)行多次而不止一次,可以把所有未付款的客戶找出來放在一個(gè)臨時(shí)文件中,并按客戶的名字進(jìn)行排序:  

SELECT cust.name,rcvbles.balance,……other columns  

FROM cust,rcvbles  

WHERE cust.customer_id = rcvlbes.customer_id  

AND rcvblls.balance>;0  

ORDER BY cust.name  

INTO TEMP cust_with_balance  

然后以下面的方式在臨時(shí)表中查詢:  

SELECT * FROM cust_with_balance  

WHERE postcode>;“98000”  

臨時(shí)表中的行要比主表中的行少,而且物理順序就是所要求的順序,減少了磁盤I/O,所以查詢工作量可以得到大幅減少。  

注意:臨時(shí)表創(chuàng)建后不會反映主表的修改。在主表中數(shù)據(jù)頻繁修改的情況下,注意不要丟失數(shù)據(jù)。  

7.用排序來取代非順序存取  

非順序磁盤存取是最慢的操作,表現(xiàn)在磁盤存取臂的來回移動。SQL語句隱藏了這一情況,使得我們在寫應(yīng)用程序時(shí)很容易寫出要求存取大量非順序頁的查詢。  

有些時(shí)候,用數(shù)據(jù)庫的排序能力來替代非順序的存取能改進(jìn)查詢。
下面我們舉一個(gè)制造公司的例子來說明如何進(jìn)行查詢優(yōu)化。制造公司數(shù)據(jù)庫中包括3個(gè)表,模式如下所示:  

1.part表  

零件號?????零件描述????????其他列  

(part_num)?(part_desc)??????(other column)  

102,032???Seageat 30G disk?????……  

500,049???Novel 10M network card??……  

……  

2.vendor表  

廠商號??????廠商名??????其他列  

(vendor _num)?(vendor_name) (other column)  

910,257?????Seageat Corp???……  

523,045?????IBM Corp?????……  

……  

3.parven表  

零件號?????廠商號?????零件數(shù)量  

(part_num)?(vendor_num)?(part_amount)  

102,032????910,257????3,450,000  

234,423????321,001????4,000,000  

……  

下面的查詢將在這些表上定期運(yùn)行,并產(chǎn)生關(guān)于所有零件數(shù)量的報(bào)表:  

SELECT part_desc,vendor_name,part_amount  

FROM part,vendor,parven  

WHERE part.part_num=parven.part_num  

AND parven.vendor_num = vendor.vendor_num  

ORDER BY part.part_num  

如果不建立索引,上述查詢代碼的開銷將十分巨大。為此,我們在零件號和廠商號上建立索引。索引的建立避免了在嵌套中反復(fù)掃描。關(guān)于表與索引的統(tǒng)計(jì)信息如下:  

表?????行尺寸???行數(shù)量?????每頁行數(shù)量???數(shù)據(jù)頁數(shù)量  

(table)?(row size)?(Row count)?(Rows/Pages)?(Data Pages)  

part????150?????10,000????25???????400  

Vendor???150?????1,000???? 25???????40  

Parven???13????? 15,000????300?????? 50  

索引?????鍵尺寸???每頁鍵數(shù)量???頁面數(shù)量  

(Indexes)?(Key Size)?(Keys/Page)???(Leaf Pages)  

part?????4??????500???????20  

Vendor????4??????500???????2  

Parven????8??????250???????60  

看起來是個(gè)相對簡單的3表連接,但是其查詢開銷是很大的。通過查看系統(tǒng)表可以看到,在part_num上和vendor_num上有簇索引,因此索引是按照物理順序存放的。parven表沒有特定的存放次序。這些表的大小說明從緩沖頁中非順序存取的成功率很小。此語句的優(yōu)化查詢規(guī)劃是:首先從part中順序讀取400頁,然后再對parven表非順序存取1萬次,每次2頁(一個(gè)索引頁、一個(gè)數(shù)據(jù)頁),總計(jì)2萬個(gè)磁盤頁,最后對vendor表非順序存取1.5萬次,合3萬個(gè)磁盤頁?梢钥闯鲈谶@個(gè)索引好的連接上花費(fèi)的磁盤存取為5.04萬次。  

實(shí)際上,我們可以通過使用臨時(shí)表分3個(gè)步驟來提高查詢效率:  

1.從parven表中按vendor_num的次序讀數(shù)據(jù):  

SELECT part_num,vendor_num,price  

FROM parven  

ORDER BY vendor_num  

INTO temp pv_by_vn  

這個(gè)語句順序讀parven(50頁),寫一個(gè)臨時(shí)表(50頁),并排序。假定排序的開銷為200頁,總共是300頁。  

2.把臨時(shí)表和vendor表連接,把結(jié)果輸出到一個(gè)臨時(shí)表,并按part_num排序:  

SELECT pv_by_vn,* vendor.vendor_num  

FROM pv_by_vn,vendor  

WHERE pv_by_vn.vendor_num=vendor.vendor_num  

ORDER BY pv_by_vn.part_num  

INTO TMP pvvn_by_pn  

DROP TABLE pv_by_vn  

這個(gè)查詢讀取pv_by_vn(50頁),它通過索引存取vendor表1.5萬次,但由于按vendor_num次序排列,實(shí)際上只是通過索引順序地讀vendor表(40+2=42頁),輸出的表每頁約95行,共160頁。寫并存取這些頁引發(fā)5*160=800次的讀寫,索引共讀寫892頁。  

3.把輸出和part連接得到最后的結(jié)果:  

SELECT pvvn_by_pn.*,part.part_desc  

FROM pvvn_by_pn,part  

WHERE pvvn_by_pn.part_num=part.part_num  

DROP TABLE pvvn_by_pn  

這樣,查詢順序地讀pvvn_by_pn(160頁),通過索引讀part表1.5萬次,由于建有索引,所以實(shí)際上進(jìn)行1772次磁盤讀寫,優(yōu)化比例為30∶1。筆者在Informix Dynamic Sever上做同樣的實(shí)驗(yàn),發(fā)現(xiàn)在時(shí)間耗費(fèi)上的優(yōu)化比例為5∶1(如果增加數(shù)據(jù)量,比例可能會更大)。  


小?結(jié)  


20%的代碼用去了80%的時(shí)間,這是程序設(shè)計(jì)中的一個(gè)著名定律,在數(shù)據(jù)庫應(yīng)用程序中也同樣如此。我們的優(yōu)化要抓住關(guān)鍵問題,對于數(shù)據(jù)庫應(yīng)用程序來說,重點(diǎn)在于SQL的執(zhí)行效率。查詢優(yōu)化的重點(diǎn)環(huán)節(jié)是使得數(shù)據(jù)庫服務(wù)器少從磁盤中讀數(shù)據(jù)以及順序讀頁而不是非順序讀頁。

論壇徽章:
1
榮譽(yù)版主
日期:2011-11-23 16:44:17
2 [報(bào)告]
發(fā)表于 2003-06-03 14:06 |只看該作者

數(shù)據(jù)庫的查詢優(yōu)化技術(shù)

人們在使用SQL時(shí)往往會陷入一個(gè)誤區(qū),即太關(guān)注于所得的結(jié)果是否正確,而忽略了不同的實(shí)現(xiàn)方法之間可能存在的
性能差異,這種性能差異在大型的或是復(fù)雜的數(shù)據(jù)庫環(huán)境中(如聯(lián)機(jī)事務(wù)處理OLTP或決策支持系統(tǒng)DSS)中表現(xiàn)得尤為明
顯。筆者在工作實(shí)踐中發(fā)現(xiàn),不良的SQL往往來自于不恰當(dāng)?shù)乃饕O(shè)計(jì)、不充份的連接條件和不可優(yōu)化的where子句。在對
它們進(jìn)行適當(dāng)?shù)膬?yōu)化后,其運(yùn)行速度有了明顯地提高!下面我將從這三個(gè)方面分別進(jìn)行總結(jié):

---- 為了更直觀地說明問題,所有實(shí)例中的SQL運(yùn)行時(shí)間均經(jīng)過測試,不超過1秒的均表示為(< 1秒)。

---- 測試環(huán)境--
---- 主機(jī):HP LH II
---- 主頻:330MHZ
---- 內(nèi)存:128兆
---- 操作系統(tǒng):Operserver5.0.4
----數(shù)據(jù)庫:Sybase11.0.3

一、不合理的索引設(shè)計(jì)
----例:表record有620000行,試看在不同的索引下,下面幾個(gè) SQL的運(yùn)行情況:
---- 1.在date上建有一非個(gè)群集索引

select count(*) from record where date >;
'19991201' and date < '19991214'and amount >;
2000 (25秒)
select date,sum(amount) from record group by date
(55秒)
select count(*) from record where date >;
'19990901' and place in ('BJ','SH') (27秒)

---- 分析:
----date上有大量的重復(fù)值,在非群集索引下,數(shù)據(jù)在物理上隨機(jī)存放在數(shù)據(jù)頁上,在范圍查找時(shí),必須執(zhí)行一次表掃描
才能找到這一范圍內(nèi)的全部行。

---- 2.在date上的一個(gè)群集索引

select count(*) from record where date >;
'19991201' and date < '19991214' and amount >;
2000 (14秒)
select date,sum(amount) from record group by date
(28秒)
select count(*) from record where date >;
'19990901' and place in ('BJ','SH')(14秒)

---- 分析:
---- 在群集索引下,數(shù)據(jù)在物理上按順序在數(shù)據(jù)頁上,重復(fù)值也排列在一起,因而在范圍查找時(shí),可以先找到這個(gè)范圍的
起末點(diǎn),且只在這個(gè)范圍內(nèi)掃描數(shù)據(jù)頁,避免了大范圍掃描,提高了查詢速度。

---- 3.在place,date,amount上的組合索引

select count(*) from record where date >;
'19991201' and date < '19991214' and amount >;
2000 (26秒)
select date,sum(amount) from record group by date
(27秒)
select count(*) from record where date >;
'19990901' and place in ('BJ, 'SH')(< 1秒)

---- 分析:
---- 這是一個(gè)不很合理的組合索引,因?yàn)樗那皩?dǎo)列是place,第一和第二條SQL沒有引用place,因此也沒有利用上索
引;第三個(gè)SQL使用了place,且引用的所有列都包含在組合索引中,形成了索引覆蓋,所以它的速度是非?斓。

---- 4.在date,place,amount上的組合索引

select count(*) from record where date >;
'19991201' and date < '19991214' and amount >;
2000(< 1秒)
select date,sum(amount) from record group by date
(11秒)
select count(*) from record where date >;
'19990901' and place in ('BJ','SH')(< 1秒)

---- 分析:
---- 這是一個(gè)合理的組合索引。它將date作為前導(dǎo)列,使每個(gè)SQL都可以利用索引,并且在第一和第三個(gè)SQL中形成了索引
覆蓋,因而性能達(dá)到了最優(yōu)。

---- 5.總結(jié):

---- 缺省情況下建立的索引是非群集索引,但有時(shí)它并不是最佳的;合理的索引設(shè)計(jì)要建立在對各種查詢的分析和預(yù)測
上。一般來說:

---- ①.有大量重復(fù)值、且經(jīng)常有范圍查詢

(between, >;,< ,>;=,< =)和order by
、group by發(fā)生的列,可考慮建立群集索引;

---- ②.經(jīng)常同時(shí)存取多列,且每列都含有重復(fù)值可考慮建立組合索引;

---- ③.組合索引要盡量使關(guān)鍵查詢形成索引覆蓋,其前導(dǎo)列一定是使用最頻繁的列。

二、不充份的連接條件:
---- 例:表card有7896行,在card_no上有一個(gè)非聚集索引,表account有191122行,在 account_no上有一個(gè)非聚集索
引,試看在不同的表連接條件下,兩個(gè)SQL的執(zhí)行情況:

select sum(a.amount) from account a,
card b where a.card_no = b.card_no(20秒)

---- 將SQL改為:
select sum(a.amount) from account a,
card b where a.card_no = b.card_no and a.
account_no=b.account_no(< 1秒)

---- 分析:
---- 在第一個(gè)連接條件下,最佳查詢方案是將account作外層表,card作內(nèi)層表,利用card上的索引,其I/O次數(shù)可由以下
公式估算為:

---- 外層表account上的22541頁+(外層表account的191122行*內(nèi)層表card上對應(yīng)外層表第一行所要查找的3頁)=595907
次I/O

---- 在第二個(gè)連接條件下,最佳查詢方案是將card作外層表,account作內(nèi)層表,利用account上的索引,其I/O次數(shù)可由
以下公式估算為:

---- 外層表card上的1944頁+(外層表card的7896行*內(nèi)層表account上對應(yīng)外層表每一行所要查找的4頁)= 33528次I/O

---- 可見,只有充份的連接條件,真正的最佳方案才會被執(zhí)行。

---- 總結(jié):

---- 1.多表操作在被實(shí)際執(zhí)行前,查詢優(yōu)化器會根據(jù)連接條件,列出幾組可能的連接方案并從中找出系統(tǒng)開銷最小的最佳
方案。連接條件要充份考慮帶有索引的表、行數(shù)多的表;內(nèi)外表的選擇可由公式:外層表中的匹配行數(shù)*內(nèi)層表中每一次查
找的次數(shù)確定,乘積最小為最佳方案。

---- 2.查看執(zhí)行方案的方法-- 用set showplanon,打開showplan選項(xiàng),就可以看到連接順序、使用何種索引的信息;想
看更詳細(xì)的信息,需用sa角色執(zhí)行dbcc(3604,310,302)。

三、不可優(yōu)化的where子句
---- 1.例:下列SQL條件語句中的列都建有恰當(dāng)?shù)乃饕珗?zhí)行速度卻非常慢:

select * from record where
substring(card_no,1,4)='5378'(13秒)
select * from record where
amount/30< 1000(11秒)
select * from record where
convert(char(10),date,112)='19991201'(10秒)

---- 分析:
---- where子句中對列的任何操作結(jié)果都是在SQL運(yùn)行時(shí)逐列計(jì)算得到的,因此它不得不進(jìn)行表搜索,而沒有使用該列上面
的索引;如果這些結(jié)果在查詢編譯時(shí)就能得到,那么就可以被SQL優(yōu)化器優(yōu)化,使用索引,避免表搜索,因此將SQL重寫成
下面這樣:

select * from record where card_no like
'5378%'(< 1秒)
select * from record where amount
< 1000*30(< 1秒)
select * from record where date= '1999/12/01'
(< 1秒)

---- 你會發(fā)現(xiàn)SQL明顯快起來!

---- 2.例:表stuff有200000行,id_no上有非群集索引,請看下面這個(gè)SQL:

select count(*) from stuff where id_no in('0','1')
(23秒)

---- 分析:
---- where條件中的'in'在邏輯上相當(dāng)于'or',所以語法分析器會將in ('0','1')轉(zhuǎn)化為id_no ='0' or id_no='1'來執(zhí)
行。我們期望它會根據(jù)每個(gè)or子句分別查找,再將結(jié)果相加,這樣可以利用id_no上的索引;但實(shí)際上(根據(jù)showplan),
它卻采用了"OR策略",即先取出滿足每個(gè)or子句的行,存入臨時(shí)數(shù)據(jù)庫的工作表中,再建立唯一索引以去掉重復(fù)行,最后
從這個(gè)臨時(shí)表中計(jì)算結(jié)果。因此,實(shí)際過程沒有利用id_no上索引,并且完成時(shí)間還要受tempdb數(shù)據(jù)庫性能的影響。

---- 實(shí)踐證明,表的行數(shù)越多,工作表的性能就越差,當(dāng)stuff有620000行時(shí),執(zhí)行時(shí)間竟達(dá)到220秒!還不如將or子句分
開:

select count(*) from stuff where id_no='0'
select count(*) from stuff where id_no='1'

---- 得到兩個(gè)結(jié)果,再作一次加法合算。因?yàn)槊烤涠际褂昧怂饕瑘?zhí)行時(shí)間只有3秒,在620000行下,時(shí)間也只有4秒;
者,用更好的方法,寫一個(gè)簡單的存儲過程:
create proc count_stuff as
declare @a int
declare @b int
declare @c int
declare @d char(10)
begin
select @a=count(*) from stuff where id_no='0'
select @b=count(*) from stuff where id_no='1'
end
select @c=@a+@b
select @d=convert(char(10),@c)
print @d

---- 直接算出結(jié)果,執(zhí)行時(shí)間同上面一樣快!
---- 總結(jié):

---- 可見,所謂優(yōu)化即where子句利用了索引,不可優(yōu)化即發(fā)生了表掃描或額外開銷。

---- 1.任何對列的操作都將導(dǎo)致表掃描,它包括數(shù)據(jù)庫函數(shù)、計(jì)算表達(dá)式等等,查詢時(shí)要盡可能將操作移至等號右邊。

---- 2.in、or子句常會使用工作表,使索引失效;如果不產(chǎn)生大量重復(fù)值,可以考慮把子句拆開;拆開的子句中應(yīng)該包含
索引。

---- 3.要善于使用存儲過程,它使SQL變得更加靈活和高效。

---- 從以上這些例子可以看出,SQL優(yōu)化的實(shí)質(zhì)就是在結(jié)果正確的前提下,用優(yōu)化器可以識別的語句,充份利用索引,減
少表掃描的I/O次數(shù),盡量避免表搜索的發(fā)生。其實(shí)SQL的性能優(yōu)化是一個(gè)復(fù)雜的過程,上述這些只是在應(yīng)用層次的一種體
現(xiàn),深入研究還會涉及數(shù)據(jù)庫層的資源配置、網(wǎng)絡(luò)層的流量控制以及操作系統(tǒng)層的總體設(shè)計(jì)。

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2003-06-06 07:44 |只看該作者

數(shù)據(jù)庫的查詢優(yōu)化技術(shù)

精華!找這方面的資料好久了,ths!

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2003-06-06 10:14 |只看該作者

數(shù)據(jù)庫的查詢優(yōu)化技術(shù)

好好讀一讀,謝謝分享

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2003-06-12 11:57 |只看該作者

數(shù)據(jù)庫的查詢優(yōu)化技術(shù)

索引原來可以這樣用,多謝,多謝

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2003-06-12 12:43 |只看該作者

數(shù)據(jù)庫的查詢優(yōu)化技術(shù)

卍收下
salesman 該用戶已被刪除
7 [報(bào)告]
發(fā)表于 2003-07-01 11:20 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2003-10-08 09:04 |只看該作者

數(shù)據(jù)庫的查詢優(yōu)化技術(shù)

有些地方值得研究

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2009-01-07 09:36 |只看該作者
正在找的資料,謝謝了.

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2012-09-10 16:24 |只看該作者
經(jīng)典資料,收藏了。
謝謝樓主分享!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP