韩剧1988免费观看全集_久久影视三级福利片_亚洲视频在线观看免费_在线观看欧美日韩_国产亚洲激情在线_亚洲精品美女久久久_欧美国产日韩一区二区在线观看_91在线观看免费高清完整版在线观看_日韩av免费看_国产又爽又黄的激情精品视频_琪琪亚洲精品午夜在线_欧美性猛xxx_不卡毛片在线看_国产亚洲日本欧美韩国_91国内在线视频_精品国产福利视频

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

談?wù)刅FP與SQL SERVER搭配做C/S系統(tǒng)

談?wù)刅FP與SQL SERVER搭配做C/S系統(tǒng)

更新時(shí)間:2022-10-15 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

1.CLIENT/SERVER 到底是什么?  

C/S屬于2-TIER系統(tǒng),適合于中小型應(yīng)用系統(tǒng)。大系統(tǒng)一般都用3-TIER了。  
打個(gè)比方單機(jī)數(shù)據(jù)庫(kù)系統(tǒng)(比如VFP), 相當(dāng)于前店后庫(kù).店里需要什么東西,得自己去庫(kù)房找,庫(kù)房管理也是有你自己進(jìn)行. 而C/S系統(tǒng)下,店和庫(kù)是相對(duì)獨(dú)立的,有一個(gè)專門的庫(kù)房管理(數(shù)據(jù)SERVER),店里需要什么,按照手續(xù)把單子給  
庫(kù)房管理人員,由他們?nèi)ゲ僮?  

因此可以看出C/S的優(yōu)點(diǎn): 支持多用戶;  更有效的數(shù)據(jù)管理,數(shù)據(jù)安全和可靠得多;遠(yuǎn)程使用數(shù)據(jù).  
如果你是單機(jī)使用當(dāng)然沒(méi)有太大必要使用C/S了.  

如果用VFP本身做C/S系統(tǒng), 效果不是很明顯,因?yàn)閂FP的數(shù)據(jù)管理功能不是很強(qiáng),比如加鎖解鎖都需要程序來(lái)操作. 我主要說(shuō)的是VFP/SQL SERVER系統(tǒng).  

2. SQL SERVER  

SQL SERVER是微軟發(fā)布的RDBMS(關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)), ORACLE, INFOMIX,POWERBUILD,也都是類似的系統(tǒng). 他們就相當(dāng)于倉(cāng)庫(kù)的管理系統(tǒng),但功能不僅僅是數(shù)據(jù)管理. 微軟的數(shù)據(jù)庫(kù)產(chǎn)品從功能和規(guī)模由小到大排列依次是: ACCESS, VFP, SQL SERVER.  

稍微大一點(diǎn)的系統(tǒng),SQL SERVER是需要專人管理的,這就是DBA (DATABASE ADMINISTRATOR)的位置.現(xiàn)在北美人才市場(chǎng)上, DBA的工作比程序員的工作好找些. 工資比普通程序員略高, 工作穩(wěn)定性也強(qiáng)一些.  

SQL SERVER是一套大的軟件系統(tǒng),可以安裝在專門的NT數(shù)據(jù)SERVER上,也有個(gè)人版可以安裝在WIN95/98上, 主要是為了咱們這些程序員方便測(cè)試.  它的功能主要有這么幾塊: 數(shù)據(jù)庫(kù)的管理和維護(hù),用戶/安全管理, 數(shù)據(jù)的發(fā)布/轉(zhuǎn)換.  

3. 用VFP/SQL SERVER做C/S系統(tǒng)  

VFP和SQL SERVER的搭配應(yīng)該是比較完美的, 但因?yàn)閂B才是微軟的主流產(chǎn)品(VB一直是微軟的,FOXPRO是后來(lái)才買的,后娘生的), 所以微軟從來(lái)沒(méi)有大力推薦或者宣傳過(guò)VFP, 而是把VFP獨(dú)有的數(shù)據(jù)庫(kù)技術(shù)融合到自己的其它產(chǎn)品里了: SQL SERVER, ODBC, OLE DB/ADO. 最近甚至把VFP從VISUAL STUDIO里獨(dú)立出來(lái)了.  

VFP和SQL SERVER的交流,可以通過(guò)3種方式進(jìn)行:  
A. 遠(yuǎn)程視圖  B. ADO控件 C. SPT (SQL PASS THROUGH)  

3種方式各有優(yōu)缺點(diǎn), 而我最偏好第3種. 遠(yuǎn)程視圖和ADO都在VFP和SQL SERVER中間加了一個(gè)層次, 而這層次就相當(dāng)于一個(gè)黑箱,你不清楚它們到底怎么操作數(shù)據(jù)的,只需按照它們的規(guī)則進(jìn)行設(shè)置,使用  
相應(yīng)的命令就可以. 反正我作為程序員,喜歡清楚地知道我的程序每一步都在干什么,所以我喜歡用SPT, 也從不用向?qū)?lái)建立表單報(bào)表一類的.  

SPT技術(shù)是通過(guò)VFP的函數(shù)SQLCONNECT()來(lái)和SQL SERVER建立連接,  然后用SQLEXEC()函數(shù)把要執(zhí)行的SQL命令 送到SQL SERVER上去執(zhí)行,  
所有對(duì)數(shù)據(jù)的操作都是通過(guò)這些SQL命令來(lái)進(jìn)行的. 每一個(gè)細(xì)節(jié)都由自己的代碼來(lái)控制.  

4. VFP數(shù)據(jù)的升遷  

VFP的數(shù)據(jù)庫(kù),可以直接用VFP自帶的升遷向?qū)мD(zhuǎn)到SQL SERVER上,但必須把所有的表都放到數(shù)據(jù)庫(kù)里,自由表不能直接升遷, 而實(shí)際上升遷上去的又只是表,數(shù)據(jù)庫(kù)本身不能轉(zhuǎn)到SQL SERVER里. 感覺(jué)怪怪的. 也許是為了升遷索引或者關(guān)系吧.  

要把VFP數(shù)據(jù)升遷到SQL SERVER上, 必須先在SQL SERVER里建立相應(yīng)的數(shù)據(jù)庫(kù). SQL SERVER的管理是通過(guò)ENTERPRISE MANAGER (EM)來(lái)進(jìn)行的. 通過(guò)它建立數(shù)據(jù)庫(kù), 每個(gè)數(shù)據(jù)庫(kù)里可以包含 數(shù)據(jù)表,用戶/用戶群,視圖,存儲(chǔ)過(guò)程等等.  

至于改用SQL SERVER后,原來(lái)的VFP程序是肯定需要修改的, 而且是比較大的改動(dòng).  


***************  
談?wù)刅FP和SQL SERVER搭配做C/S系統(tǒng) (二) --動(dòng)態(tài)設(shè)置ODBC連接  

1。設(shè)置ODBC數(shù)據(jù)源  

VFP和SQL SERVER的連接是通過(guò)ODBC或者OLE DB(ADO)來(lái)進(jìn)行的?梢源蜷_(kāi)控制面板的ODBC數(shù)據(jù)源進(jìn)行設(shè)置。但很多情況下,我們希望能在程序里動(dòng)態(tài)設(shè)置數(shù)據(jù)源,一來(lái)可以不用去為每個(gè)用戶的機(jī)器手動(dòng)設(shè)置, 二來(lái)為了數(shù)據(jù)的安全性,使用完后,希望把ODBC數(shù)據(jù)源刪掉。  

下面的例子是用API函數(shù)來(lái)設(shè)置和刪除ODBC數(shù)據(jù)源。  
函數(shù)名字是 SQLConfigDataSource,其中第二項(xiàng)參數(shù)是數(shù)字(1-增加 2-修改 3-刪除)  

DECLARE INTEGER SQLConfigDataSource IN odbccp32 INTEGER, INTEGER, STRING, STRING  

lnWindowHandle=0  
lcODBCDriver='SQL Server' &&DRIVER類型  
lcODBCName='SharedData'   &&數(shù)據(jù)源名字  
lcODBCDesc='Shared Data Source' &&數(shù)據(jù)源描述  
lcODBCServer='DEVSQL' &&SQL SERVER名字  
lcODBCDatabase='Shared' &&要連接的數(shù)據(jù)庫(kù)名字  

**先試圖修改已有的ODBC,如果不存在,返回0。  
lreturn=SQLConfigDataSource(lnWindowHandle, 2, lcODBCDriver, ;  
'DSN=' + lcODBCName + CHR(0) ;  
+ 'Description=' + lcODBCDesc + CHR(0) ;  
+ 'Server=' + lcODBCServer + CHR(0) ;  
+ 'Database=' + lcODBCDatabase + CHR(0))  
IF lreturn=0 &&不存在  
   
**添加新的ODBC  
lreturn=SQLConfigDataSource(lnWindowHandle, 1, lcODBCDriver, ;  
'DSN=' + lcODBCName + CHR(0) ;  
+ 'Description=' + lcODBCDesc + CHR(0) ;  
+ 'Server=' + lcODBCServer + CHR(0) ;  
+ 'Database=' + lcODBCDatabase + CHR(0))  
IF lreturn=0 &&失敗  
   MessageBox('添加ODBC數(shù)據(jù)源失敗',16,'BUFFER')  
ENDIF  
ENDIF  
         
2。刪除ODBC數(shù)據(jù)源  
         
**用完后,可以在表單DESTROY事件里刪除ODBC。 如果不想重復(fù)設(shè)置參數(shù),可以把這些參數(shù)加到表單作為屬性。  

DECLARE INTEGER SQLConfigDataSource IN odbccp32 INTEGER, INTEGER, STRING, STRING  

lnWindowHandle=0  
lcODBCDriver='SQL Server'  
lcODBCName='SharedData'  
lcODBCDesc='Shared Data Source'  
lcODBCServer='DEVSQL'  
lcODBCDatabase='Shared'  

**先修改,或者其是否存在  
lreturn=SQLConfigDataSource(lnWindowHandle, ;  
   2, lcODBCDriver, ;  
   'DSN=' + lcODBCName + CHR(0) ;  
   + 'Description=' + lcODBCDesc + CHR(0) ;  
   + 'Server=' + lcODBCServer + CHR(0) ;  
   + 'Database=' + lcODBCDatabase + CHR(0))  
IF lreturn=1 &&ODBC存在,刪除它  
   lreturn=SQLConfigDataSource(lnWindowHandle, ;  
       3, lcODBCDriver, ;  
       'DSN=' + lcODBCName + CHR(0) ;  
       + 'Description=' + lcODBCDesc + CHR(0) ;  
       + 'Server=' + lcODBCServer + CHR(0) ;  
       + 'Database=' + lcODBCDatabase + CHR(0))  
   IF lreturn=0  
       MessageBox('刪除ODBC源失敗,16,'BUFFER')  
   ENDIF  
ENDIF  

**清除DLL  
CLEAR DLLS  

3. 從VFP連接到SQL SERVER  

lnHandle=SQLConnect("SharedData","用戶名”,“密碼”)  
If lnHandle>0 &&連接成功  
**從庫(kù)里獲得數(shù)據(jù)(比如從EMP表里得到部門號(hào)為‘01’的職工)  
lnReturn=SQLExec(lnHandle,"Select * from Emp Where cDept='01'","CursorEmp")  
If lnReturn>0 &&運(yùn)行成功  
   Browse  
Else &&失敗  
   &&出錯(cuò)處理  
EndIf  
Else &&連接失敗  
MessageBox("連接SQL SERVER失敗”,16,“BUFFER”)  
EndIf  

**用完連接后,最好馬上關(guān)閉,連接是很寶貴的資源,微軟是按連接數(shù)收費(fèi)的,而且每個(gè)連接會(huì)增加SQL SERVER的管理負(fù)擔(dān)  
=SQLDisconnect(lnHandle)  

***************  
(續(xù)) (這些貼子必須連著看)  

用SPT技術(shù)更新數(shù)據(jù)時(shí),必須通過(guò)SQL命令進(jìn)行,SQL命令必須符合ANSI或者T-SQL(微軟的TRANSACTION SQL),因?yàn)槊钍峭ㄟ^(guò)VFP的SQLEXEC()函數(shù)送到SQL SERVER去執(zhí)行的,語(yǔ)法必須遵守SQL SERVER的規(guī)則,而不是VFP的規(guī)則。不熟悉的人,最容易犯的錯(cuò)誤就是把VFP的函數(shù)傳送到SQL SERVER上執(zhí)行,結(jié)果總出錯(cuò)。兩者大部分函數(shù)都是不一樣的。  

比如ALLTRIM()是VFP的, SQL SERVER里是LTRIM()和RTRIM()  
VFP日期以{}分界,但SQL SERVER里不認(rèn),必須用單引號(hào).  

如果SQL命令里用到VFP程序里的變量,變量前必須加問(wèn)號(hào)“?”  
比如,更新一個(gè)表的字段  

lcLName="Zhang"  
lcFName="San"  
lnReturn=SQLEXEC(連接句柄,“Update Emp Set cLName=?lcName, cFName=?lcFName Where cEmpNo='733000'")  

如果返回值lnReturn>0,就更新成功了  

插入記錄,或者逐條修改記錄時(shí),只能每次操作一條記錄。  
比如要把臨時(shí)表TmpEmp里的記錄加到SQL SERVER的EMP表里,就得用循環(huán)  

Select TmpEmp  
Scan  
lnReturn=SQLEXEC(連接句柄,"Insert Into Emp (cEmpNo,cLName,cFName) values (?TmpEmp.cEmpNo,?cTmpEmp.cLName,?cTmpEmp.cFName)"  
EndScan  

*** 要得到SQL SERVER上某個(gè)表的結(jié)構(gòu),有兩種辦法,一是運(yùn)行SQL SERVER自帶的系統(tǒng)存儲(chǔ)過(guò)程。一是運(yùn)行一個(gè)SELECT命令。  

比如要從SQL SERVER得到EMP表的結(jié)構(gòu)  

lnReturn=SQLEXEC(連接句柄,"Select Top 0 * From Emp","TmpEmp")  

返回的結(jié)果都是臨時(shí)表,是只讀的,要想變成可讀寫的,需要做點(diǎn)小變化:  

Select 0  
Use DBF("TmpEmp") Again Alias Emp  
Use In TmpEmp  

現(xiàn)在得到的EMP臨時(shí)表就是可讀寫的了。  

*注 "Select Top 0 From Emp" 命令在VFP里是錯(cuò)誤命令,但SQL SERVER里可以執(zhí)行.  


SPT和使用視圖相比,優(yōu)點(diǎn)是每一步你都清楚自己在做什么,知道為什么命令會(huì)出錯(cuò)。缺點(diǎn)是你需要多寫命令,多了解SQL SERVER的語(yǔ)法。  


***************  
談?wù)刅FP和SQL SERVER搭配做C/S系統(tǒng) (五) --從VFP控制SQL SERVER事務(wù)處理和加鎖  

**建立與SQL SERVER的連接  
lnHandle=SQLConnect("ODBC數(shù)據(jù)源","用戶名","密碼")  

If lnHandle>0  
   
  && 設(shè)置成手工事務(wù)處理模式,由代碼來(lái)控制  
   = SQLSETPROP(lnSQL_Hand, 'Transactions', 2)    
   
  **下面的命令從EMPPAY里選取記錄,并給該表加上獨(dú)占鎖(TABLELOCKX),一直到該事務(wù)結(jié)束(HOLDLOCK)  
   
  ln1=SQLEXEC(lnHandle, "SELECT * FROM Emppay  WITH (TABLOCKX, HOLDLOCK)","Emppay")  
   
  **執(zhí)行其它命令,比如更新數(shù)據(jù)  
  ln2=SQLEXEC(lnHandle,"Update PayTotal Set ......")  
  ...  
  ...  
   
  **如果所有命令都正確執(zhí)行了,則  
  =SQLCOMMIT(lnHandle)  
   
  ***如果要放棄整個(gè)事務(wù)處理,用  
  =SQLROLLBACK(lnHandle)  
   
  ***關(guān)閉連接,事務(wù)自動(dòng)結(jié)束,鎖也解開(kāi)  
  =SQLDISCONNECT(lnHandle)  
   
Else  
     ****連接失敗  
EndIf  

*** SQLSETPROP()函數(shù)  
這個(gè)VFP函數(shù)是用來(lái)設(shè)置當(dāng)前連接的屬性的。 比如上邊的手工事務(wù)處理。  
還有一個(gè)比較常用的屬性是DISPLOGIN,該屬性控制是否顯示SQL SERVER的登錄表單  

第3個(gè)參數(shù): 1 - 顯示登錄表單,如果登錄信息(用戶名,密碼)不完全   2 - 總顯示登錄表單  3 - 不顯示登錄表單  
                         
例如:  
=SQLSETPROP(lnHandle, "DISPLOGIN",1)  

當(dāng)使用SPT技術(shù)時(shí),為節(jié)約連接數(shù)減少服務(wù)器負(fù)擔(dān),需要經(jīng)常連接和斷開(kāi)SQL SERVER,有時(shí)候你并不希望每次連接都讓用戶登錄,當(dāng)用戶首次登錄后,可以把名字和密碼存起來(lái),以后的連接可以自動(dòng)登錄了。  


***************  
談?wù)刅FP和SQL SERVER搭配做C/S系統(tǒng) (六) -- SQL SERVER的索引  

作為VFP程序員,我們深知索引對(duì)表的重要性,好的索引可以大大縮短程序讀取數(shù)據(jù)的時(shí)間。  
索引對(duì)于SQL SERVER數(shù)據(jù)表來(lái)說(shuō),同樣是很重要的。你可以做個(gè)簡(jiǎn)單的測(cè)試。  

1. 索引測(cè)試  

從SQL SERVER程序組里或者ENTERPRISE MANAGER的TOOLS菜單上打開(kāi)QUERY ANALYZER工具.  
連接到你的SERVER后, 選擇QUERY菜單上的CURRENT CONNECTION OPTIONS(當(dāng)前連接選項(xiàng)),  
把SHOW STATS TIME 和SHOW STATS I/O兩個(gè)選項(xiàng)打勾,然后點(diǎn)OK. 這兩個(gè)選項(xiàng)將會(huì)告訴你命令的運(yùn)行時(shí)間和讀寫次數(shù).  
如果你的SQL命令里用到多個(gè)表,還可以選上QUERY菜單上的SHOW EXECUTION PLAN, 它會(huì)告訴你的命令在各各表上所花費(fèi)的時(shí)間.  

選一個(gè)沒(méi)有索引的大小適當(dāng)?shù)谋?然后執(zhí)行一條SELECT命令,你會(huì)看到運(yùn)行時(shí)間.  
比如我用了表CHQ,有將近40萬(wàn)條記錄, 執(zhí)行下面的命令,返回5000多個(gè)記錄  

select * from Chq where date >='02/01/2001' and date<='02/28/2001'

顯示的時(shí)間和讀寫情況:
Table 'chq'. Scan count 1, logical reads 13145, physical reads 0, read-ahead reads 13152.
SQL Server Execution Times: CPU time = 5781 ms, elapsed time = 23526 ms.

然后我在CHQ表上對(duì)DATE字段建立索引,再運(yùn)行相同的SELECT, 得到如下結(jié)果:
Table 'chq'. Scan count 1, logical reads 3965, physical reads 14, read-ahead reads 0.
SQL Server Execution Times: CPU time = 704 ms, elapsed time = 6432 ms.

比較兩個(gè)結(jié)果可以看出, 建立索引后,邏輯讀寫和預(yù)讀寫次數(shù)大大減少, 占用CPU時(shí)間從5.781秒減少到了0.704秒, 總運(yùn)行時(shí)間從23.526秒減少到6.432秒
如果運(yùn)行更復(fù)雜的命令,效果會(huì)更加明顯.

2. 了解SQL SERVER的索引

SQL SERVER的數(shù)據(jù)文件和索引文件都是以頁(yè)為單位存放的,每頁(yè)是8K. 相當(dāng)于把磁盤劃分成8K大小的塊,以塊為單位存放數(shù)據(jù).
了解這一點(diǎn)是非常重要的, 它能幫助你理解下面的內(nèi)容.

SQL SERVER的索引有2大類,
一類是CLUSTERED(物理索引),每個(gè)表只能有一個(gè), 記錄在磁盤上存放時(shí)完全按照物理索引的順序.
另一類是NONCLUSTERED(邏輯索引), 記錄順序存放在索引表里.

不管是哪類索引,只要能到達(dá)目的,索引表達(dá)式(包含的字段)越簡(jiǎn)單越有效.

什么字段作為物理索引最合適?

有兩個(gè)原則: 一是在根據(jù)范圍來(lái)選擇記錄時(shí),哪個(gè)字段最有效, 二是在往磁盤上寫記錄是不會(huì)引起熱點(diǎn)(HOT SPOT).
熱點(diǎn)是指,大量讀寫發(fā)生在磁盤的同一區(qū)域,引起I/O瓶頸效應(yīng),降低運(yùn)行速度.

我們用例子來(lái)看看這些原則怎么用.
假如有個(gè)單據(jù)表, 包含這些字段: 單據(jù)號(hào),單據(jù)日期,金額,銷售地點(diǎn),已經(jīng)其它數(shù)據(jù).
哪個(gè)適合作為物理索引呢? 一般的想法是用沒(méi)有重復(fù)值的字段(相當(dāng)于VFP里的主鍵).

a. 用單據(jù)號(hào), 其實(shí)這不是恰當(dāng)?shù)倪x擇. 因?yàn)楹苌儆懈鶕?jù)單據(jù)的范圍來(lái)選擇記錄的, 比如你很少用命令來(lái)查詢單據(jù)號(hào)大于或者小于某個(gè)值的記錄. 而且在輸入時(shí),也比較容易產(chǎn)生熱點(diǎn), 因?yàn)椴迦氲挠涗浺话愣技釉诒砦?當(dāng)有大量用戶同時(shí)輸入時(shí),會(huì)產(chǎn)生熱點(diǎn). 單據(jù)號(hào)不符合上面的2條原則.

b. 用單據(jù)日期, 似乎是個(gè)比較適當(dāng)?shù)倪x擇. 因?yàn)榻?jīng)常需要用日期范圍來(lái)選擇記錄, 但同樣會(huì)因?yàn)榇罅坑脩敉瑫r(shí)輸入最新單據(jù)而在磁盤上引起熱點(diǎn).

c. 用銷售地點(diǎn), 這應(yīng)該是最恰當(dāng)?shù)奈锢硭饕诉x了. 因?yàn)槲覀儠?huì)經(jīng)常根據(jù)地點(diǎn)來(lái)選擇記錄, 而在同一時(shí)刻插入的記錄也不太可能來(lái)自同一個(gè)銷售地點(diǎn),避免了熱點(diǎn).

當(dāng)然,不同的環(huán)境下,你的選擇可能不同,比如你沒(méi)有成千上萬(wàn)的用戶,就不太需要考慮熱點(diǎn)問(wèn)題. 但要記住, 有唯一值的字段并不是物理索引的最佳選擇.

3. 選擇適當(dāng)?shù)腇illFactor

在SQL-CREATE INDEX命令里,有個(gè)FILLFACTOR選項(xiàng), 這個(gè)選項(xiàng)對(duì)索引的效率是有很大作用的.
FILLFACTOR是指建立索引時(shí), 每一頁(yè)存放數(shù)據(jù)的填滿程度, 比如100%,表示把索引文件每一頁(yè)都填滿,隱含值是0 (100%).

如果你的表經(jīng)常需要插入記錄, 選擇適當(dāng)?shù)腇ILLFACTOR就很重要了. 如果總是用100%, 當(dāng)你插入一個(gè)新記錄時(shí), 由于每頁(yè)都是滿的, 就需要進(jìn)行分頁(yè)操作(把當(dāng)前頁(yè)分成2頁(yè)),頻繁的分頁(yè)操作會(huì)占用服務(wù)器的資源和時(shí)間,也降低索引文件的效率. 而如果你的FILLFACTOR不是100%,比如設(shè)為80%, 在插入新記錄時(shí),由于當(dāng)前頁(yè)還有空間, 可以直接加入不需要分頁(yè). 當(dāng)然, FILLFACTOR太低也會(huì)降低效率,因?yàn)槟菢拥脑?頁(yè)數(shù)就多了,搜索數(shù)據(jù)用的時(shí)間長(zhǎng),占用空間也多.

如果是只讀表,或者插入記錄很少的表,用100% FILLFACTOR最好.

對(duì)于經(jīng)常插入新記錄的表,需要定期重建索引, 因?yàn)樗饕募S著頁(yè)數(shù)的增加, 效率會(huì)越來(lái)越低. 因?yàn)樗饕际菢?shù)狀結(jié)構(gòu), 當(dāng)下面的頁(yè)加得沒(méi)有規(guī)律時(shí), 連接就會(huì)變亂, 重建索引可以重新整理樹(shù)狀結(jié)構(gòu).

4. 索引分析工具

在QUERY ANALYZER的QUERY菜單里,還有個(gè)選項(xiàng)PERFORM INDEX ANALYSIS.
在輸入你的命令后,選擇這一項(xiàng), SQL SERVER會(huì)對(duì)你的命令進(jìn)行分析,然后告訴你建立什么樣的索引對(duì)當(dāng)前命令最有利.
可以把你程序里常用的命令放到這里進(jìn)行分析,找出最恰當(dāng)?shù)乃饕?/p>

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
欧美激情按摩在线| 亚洲欧美综合v| 男人c女人视频| 亚洲一区二区三区免费| 波多野结衣在线观看一区二区三区| 91九色porn| 国产精品久99| 蝌蚪91视频| 亚洲欧美日韩一区二区三区在线| 日韩av女优在线观看| 久久中文字幕精品| 国产精品一线天粉嫩av| 人妻夜夜爽天天爽| 国产日韩av在线| 超碰在线中文字幕| 在线播放你懂的| 激情丁香久久| 91亚洲免费视频| av官网在线播放| 国产欧美日韩精品在线| 国产一区二区在线播放| 亚洲一级理论片| 久草手机在线视频| 天堂视频中文在线| 亚洲欧美综合视频| 天堂√中文最新版在线| 久久九九全国免费精品观看| 国产秒拍福利视频露脸| 欧美中文字幕在线视频| 亚洲国产成人一区二区| 韩国av一区二区| 国产福利一区二区三区视频| 手机免费观看av| 狼人天天伊人久久| 国产91对白在线播放| 日韩高清不卡一区| 综合国产视频| 国产日本欧洲亚洲| 91成人抖音| 成年人免费在线视频网站| 黄色一级片在线| 色悠悠久久综合网| 日本中文字幕一区二区有码在线| 蜜桃传媒麻豆第一区在线观看| 99久久久久国产精品| 国产三级精品三级在线专区| av片免费播放| 欧美大片欧美激情性色a∨久久| 视频一区二区精品的福利| 亚洲第一中文字幕在线观看| 一区二区三区精品在线观看| 中文av在线播放| 一级淫片免费看| 免费一级特黄特色大片| 偷拍国模大尺度视频在线播放| 国产精品yjizz视频网一二区| 热re91久久精品国99热蜜臀| 在线免费看黄色| 欧美激情在线观看视频| 五月天激情在线| 欧美欧美午夜aⅴ在线观看| 日韩伦理在线视频| 99re6在线精品视频免费播放| 中文字幕人妻丝袜乱一区三区| 国产一级二级三级| 久久精品一本久久99精品| 欧美videossexotv100| 中文字幕不卡免费视频| 影音先锋电影在线观看| 精品亚洲成a人| 亚洲免费网址| 成人黄色大片在线免费观看| 欧美一区二区三区爽大粗免费| 午夜电影一区| 影音先锋5566中文源资源| 欧美一区1区三区3区公司| 亚洲人妻一区二区| 日本超碰在线观看| 欧美黄色录像片| 国产视频视频一区| 成人欧美在线| 亚洲大香人伊一本线| 久久综合色鬼综合色| 尤物视频在线视频| 99视频国产精品| 极度色播免费播放视频| 在线观看亚洲成人| 久久国产小视频| eeuss鲁片一区二区三区| 日本在线观看中文字幕| 依依成人在线| 日本成人在线电影网| 91嫩草视频在线观看| 亚洲一区二区三区综合| 精品黑人一区二区三区| 久久天天综合| 五月婷婷六月丁香激情| 亚洲午夜久久久久中文字幕久| 成人午夜又粗又硬又大| 美女脱光内衣内裤| 国产视频视频一区| 97超碰人人看人人| 毛片在线不卡| 成人18夜夜网深夜福利网| 91av视频在线| 久久精品亚洲麻豆av一区二区| 日韩精品中文字幕一区二区三区| 国产日韩欧美一二三区| 欧美成人免费高清视频| 亚洲午夜精品久久久久久浪潮| 欧美精品日韩| 91免费福利视频| 欧美色综合网站| 国产精品久久视频| 日韩国产亚洲欧美| 中文字幕一区二区人妻电影| 日韩欧美在线番号| 欧美欧美全黄| 国产999在线观看| 成人动漫在线播放| 亚洲专区在线播放| 免费在线观看麻豆视频| 在线观看老湿视频福利| 亚洲高清视频在线观看| 国产亚洲人成a在线v网站| 亚洲伊人成综合成人网| 欧美视频在线观看一区二区| 免费一区二区在线观看| va中文字幕| 奇米影视四色在观看线| 久久99久久99精品免费看小说| 九色视频九色自拍| 国精产品一区一区三区有限在线| 国产三级欧美三级| 青青视频免费在线观看| japanese国产在线观看| 麻豆久久一区二区| 懂色av懂色av粉嫩av| 亚洲成av人片| 精品无码人妻一区| 久久一级黄色片| 久久视频免费在线观看| 日韩女同强女同hd| 国产精品黄色在线观看| 99热这里只有精品66| 日本丰满少妇一区二区三区| 日产精品久久久久| 亚洲福利av| 亚洲最新中文字幕| 9色porny自拍视频一区二区| 中文字幕一区综合| 免费一级在线观看播放网址| 日韩欧国产精品一区综合无码| 天堂在线视频免费| 天天爽夜夜爽视频| 最好看的中文字幕| 久久精品在线免费观看| 成年人在线观看av| 亚洲老头同性xxxxx| 亚洲国产精品久久久久久6q| 欧美三级在线免费观看| 亚洲黄色性网站| 国产xxx精品视频大全| 国产精品一二三四五区| 四虎精品一区二区| 欧美高清自拍一区| 国产精品美女黄网| 亚洲九九在线| 亚洲另类色综合网站| 精品国产无码一区二区| 性国产高清在线观看| 北条麻妃在线| 一区二区三区视频在线观看| 成人欧美一区二区| www日本在线观看| 成人三级在线视频| 免费在线看黄网址| 男女性高潮免费网站| 日韩美女一区二区三区四区| 国产精彩免费视频| 国产精品二区影院| 国产一区二区三区四区尤物| 国产亚洲人成a一在线v站| 五月婷婷在线观看| 精品一成人岛国片在线观看| 精品国产美女在线| 免费欧美日韩| 国语对白在线刺激| 领导边摸边吃奶边做爽在线观看| 欧美日韩国产一区精品一区| 怡红院在线播放| 国产日本在线视频| 日本77777| 好看的视频你懂的| 国产毛片视频网站| 精品国产凹凸成av人网站| 99re只有精品| 综合久久久久久| 最近中文字幕免费| 欧美一级小视频| 人与动性xxxxx免费视频| 久久激情视频免费观看| 免费av成人在线| 欧美国产小视频| 91在线播放观看| 亚洲色在线视频| 中文有码一区| 国产一区二区av在线| 中文字幕高清在线免费播放| 久久久午夜精品福利内容| 国产福利电影一区二区三区| 国产精品久久精品牛牛影视| 欧美美女一区二区在线观看| 宅男一区二区三区| 成人全视频在线观看在线播放高清| 羞羞视频网站在线免费观看| 中文字幕日本视频| 国产啪精品视频网站| 国产欧美黑人| jizz18日本| 中文字幕人妻一区二区在线视频| 啦啦啦啦免费高清视频在线观看1| 日韩av电影中文字幕| 毛片aaaaaa| 狠狠色伊人亚洲综合成人| 国产专区一区二区三区| 欧美丰满高潮xxxx喷水动漫| 免费 成 人 黄 色| 色内内免费视频播放| 麻豆精品在线| 91av中文字幕| 国语一区二区三区| 亚洲高清福利| 91在线九色porny| 久久99精品国产| 欧美主播一区二区三区美女 久久精品人| 黄色网址在线免费观看| 激情欧美国产欧美| 成人三级小说| 在线观看免费亚洲| 亚洲老司机av| 99热在线国产| 欧洲av无码放荡人妇网站| 日韩欧美成人网| 亚洲成人久久久久| 亚洲美女在线视频| 精精国产xxxx视频在线动漫| 在线免费观看不卡av| 春意影院午夜免费入口| 日本精品久久中文字幕佐佐木| 天干天干啦夜天干天2019| 美女任你摸久久| 在线观看日韩羞羞视频| 日韩精品一区二区三区在线| 欧美专区中文字幕| 色中文字幕在线观看| 成年人免费视频观看| 欧美整片在线观看| www国产精品av| 久久伊人精品一区二区三区| 久久久噜噜噜久久人人看| 国产suv精品一区二区69| 91色porny蝌蚪| 黄色片视频在线免费观看| a视频免费在线观看| 亚洲欧美日韩精品久久奇米色影视| 日韩在线视频网站| 插菊花综合1| 国产无遮挡猛进猛出免费软件| 久久国产柳州莫菁门| 成人免费在线播放| 亚洲v国产v欧美v久久久久久| 黄动漫在线免费观看| 久久免费少妇高潮久久精品99| 亚洲精品电影网站| 欧美特黄一级片| 日本系列欧美系列| 欧美系列日韩一区| 无码免费一区二区三区| 中文字幕免费精品一区高清| 精品日本一区二区三区| 午夜精品久久久久久久久久| 国产黄色成人av| 不用播放器的免费av| 一本一本a久久| 欧美日韩一区二区三区免费看| 欧美色资源站| 日韩精品在线播放视频| 91禁男男在线观看| 一个人看的www免费观看视频| 亚洲跨种族黑人xxx| 男人的j进女人的j一区| 欧美一区二区三区视频| 成人a免费在线看| 182在线播放| 国产高清视频网站| 九九九九九九精品| 精品美女被调教视频大全网站| 福利视频一区| 天天操天天碰| 国产一区二区在线视频聊天| 亚洲综合五月天婷婷丁香| 日本免费看黄色| 欧美aaaaaa午夜精品| 男女网站在线观看| 西西人体44www大胆无码| 男人天堂成人网| 欧美精品激情blacked18| 美女日韩一区| 欧美综合亚洲图片综合区| 国产精品女主播av| 青草青草久热精品视频在线观看| 成年人在线网站| 97人妻精品一区二区三区视频| 久久www人成免费看片中文| 久久 天天综合| 精品成人av一区二区在线播放| 男人的天堂视频网站| 国产伦精品一区二区三区照片91| 91欧美激情另类亚洲| 欧美a在线观看| 欧美日韩精品一区视频| 国产精品国产精品国产专区不卡| 日本乱人伦a精品| 久久国产在线观看| 91嫩草|国产丨精品入口| 男人日女人下面视频| 亚洲3p在线观看|