www.黄片视频在线播放,欧美精品日韩精品一级黄,成年男女免费视频网站,99久久久国产精品免费牛牛四川,99久久精品国产9999高清,乱人妻中文字幕视频4399,亚洲男人在线视频观看

現(xiàn)在vr技術(shù)發(fā)展怎么樣了【淺談VFP中的RUSHMORE技術(shù)】

發(fā)布時(shí)間:2020-02-16 來(lái)源: 短文摘抄 點(diǎn)擊:

  摘要:本文在Visual FoxPro中用實(shí)例驗(yàn)證不同情況下使用RushMore技術(shù)對(duì)查詢速度的影響,討論這項(xiàng)技術(shù)的基本特點(diǎn),并根據(jù)其特點(diǎn)提出優(yōu)化程序結(jié)構(gòu)的方法,以達(dá)到加快數(shù)據(jù)訪問(wèn)的目的。
  關(guān)鍵詞:RushMore技術(shù);VFP;索引
  中圖分類號(hào):TP311.13 文獻(xiàn)標(biāo)識(shí)碼:A
  
  數(shù)據(jù)查詢是數(shù)據(jù)庫(kù)技術(shù)非常重要的一個(gè)部分,數(shù)據(jù)查詢速度的快慢直接影響到程序的執(zhí)行效率。在VFP中引入索引的概念來(lái)解決大型數(shù)據(jù)庫(kù)中數(shù)據(jù)查詢問(wèn)題,RushMore技術(shù)是VFP中的一種數(shù)據(jù)查詢技術(shù),它利用索引優(yōu)化對(duì)數(shù)據(jù)的訪問(wèn)。使用RushMore技術(shù),對(duì)一些復(fù)雜的表操作時(shí)比不使用這項(xiàng)技術(shù)要快成百上千倍,因此,能否正確運(yùn)用這種技術(shù)對(duì)程序的執(zhí)行效率有著意想不到的作用。
  
  1 RushMore技術(shù)實(shí)例耗時(shí)分析
  
  既然RushMore技術(shù)在VFP中有著如此重要的作用,那它是如何加快數(shù)據(jù)查詢的呢?它在所有的情況下都可以隨意使用嗎?下面,我們利用以下程序?qū)ζ渥鲆粋(gè)簡(jiǎn)單測(cè)試。
  首先,建立一個(gè)名字為jilu.dbf的表,該表有一個(gè)字段“數(shù)據(jù) c(10)”,并根據(jù)字段“數(shù)據(jù)”建立一個(gè)名為“jilu”的索引。再建立并執(zhí)行如下程序prog1.prg:
  use jilu index jilu
  for jiluhao=1 to 900000
  append blank
  replace 數(shù)據(jù) with “Visual”
  endfor
  go 99
  replace數(shù)據(jù)with“FoxPro”
  go 34555
  replace數(shù)據(jù)with “FoxPro”
  go 75678
  replace 數(shù)據(jù) with “FoxPro”
  該程序的作用是向新建立的jilu表中添加90萬(wàn)條數(shù)據(jù)為“Visual”的記錄,并把其中的第99、34555、75678條記錄中的數(shù)據(jù)更改為“FoxPro”。
  1.1 在有索引的表中使用RushMore技術(shù)
  現(xiàn)在,首先確保jilu表已經(jīng)打開(kāi)并且在當(dāng)前正在使用的工作區(qū)中,然后建立并執(zhí)行如下程序prog2.prg:
  set optimize off
  ks=second()
  display all for 數(shù)據(jù)=“FoxPro”
  js=second()
  ? “不使用RushMore技術(shù)時(shí),程序用時(shí):”+str(js-ks,5,3)+“秒”
  set optimize on
  ks=second()
  display all for 數(shù)據(jù)=“FoxPro”
  js=second()
  ? “使用RushMore技術(shù)時(shí),程序用時(shí):”+str(js-ks,5,3)+“秒”
  在這個(gè)程序中用變量“ks”記錄查詢開(kāi)始的時(shí)間,用變量“js”記錄查詢結(jié)束的時(shí)間,然后用表達(dá)式“js-ks”計(jì)算在查詢?nèi)齻(gè)數(shù)據(jù)為“FoxPro”的記錄時(shí)所需要的耗時(shí)量。程序中分別用Set Optimize On和Set Optimize Off開(kāi)啟和關(guān)閉RushMore技術(shù),最終屏幕上會(huì)分別顯示出在這兩種情況下程序查找三條“FoxPro”數(shù)據(jù)所需的時(shí)間。表1為五次實(shí)驗(yàn)結(jié)果,從該表中我們可以發(fā)現(xiàn)當(dāng)開(kāi)啟RushMore技術(shù)時(shí)耗時(shí)量平均值為0.003秒,而關(guān)閉RushMore技術(shù)時(shí)耗時(shí)量平均值為3.373秒。很明顯,在有索引的普通表中開(kāi)啟了RushMore技術(shù)后查詢速度能夠快上千倍。
  
  1.2 在沒(méi)有索引的表中使用RushMore技術(shù)
  現(xiàn)在,將jilu表中的索引jilu刪除后再次執(zhí)行程序prog2.prg,實(shí)驗(yàn)結(jié)果如表2所示:開(kāi)啟RushMore技術(shù)時(shí)耗時(shí)量平均值為3.280秒,而關(guān)閉RushMore技術(shù)時(shí)耗時(shí)量平均值為3.337秒。從實(shí)驗(yàn)結(jié)果中可以發(fā)現(xiàn)在沒(méi)有索引的普通表中開(kāi)啟RushMore技術(shù)幾乎沒(méi)有加快數(shù)據(jù)的查詢速度,因此,在沒(méi)有索引的表中,RushMore對(duì)程序效率沒(méi)有明顯的優(yōu)化效果。
  
  1.3 在SQL語(yǔ)句中使用RushMore技術(shù)
  重新為jilu表建立一個(gè)索引,然后再建立并執(zhí)行如下程序prog3.prg:
  set safety off
  set optimize off
  ks=second()
  select * from jilu where 數(shù)據(jù)=“FoxPro” into table temp
  js=second() &&記錄操作結(jié)束時(shí)間
  ? “不使用RushMore技術(shù)時(shí),程序用時(shí):”+str(js-ks,5,3)+“秒”
  set optimize on
  ks=second()
  select * from jilu where 數(shù)據(jù)=“FoxPro” into table temp1
  js=second()
  ? “使用RushMore技術(shù)時(shí),程序用時(shí):”+str(js-ks,5,3)+“秒”
  set safety on
  表3為五次實(shí)驗(yàn)結(jié)果,在該表中發(fā)現(xiàn)當(dāng)開(kāi)啟RushMore技術(shù)時(shí)耗時(shí)量平均值為0.002秒,而關(guān)閉RushMore技術(shù)時(shí)耗時(shí)量平均值也為0.002秒。若再次把索引刪除,會(huì)得到和表2差不多的實(shí)驗(yàn)結(jié)果。因此在簡(jiǎn)單的SQL語(yǔ)句中,是否開(kāi)啟RushMore對(duì)查詢的速度也沒(méi)有多大影響。
  
  
  2 RushMore技術(shù)的特點(diǎn)
  
  從上面的幾個(gè)試驗(yàn)中我們發(fā)現(xiàn)在VFP的非SQL命令中,RushMore技術(shù)對(duì)命令的優(yōu)化是基于VFP中索引的,它能根據(jù)條件表達(dá)式自動(dòng)選擇索引,以提高數(shù)據(jù)查詢的速度,彌補(bǔ)VFP不能自動(dòng)選擇索引的缺陷。
  2.1 RushMore優(yōu)化原理
  RushMore技術(shù)是一種數(shù)據(jù)存取技術(shù),它允許成組的記錄很有效的被存取,在速度上可與經(jīng)過(guò)索引的單一記錄存取相比較,它使VFP能夠在PC機(jī)上處理含有數(shù)百萬(wàn)個(gè)記錄的真正巨大的表,在速度上能夠和大型機(jī)數(shù)據(jù)庫(kù)系統(tǒng)相媲美。
  RushMore利用標(biāo)準(zhǔn)的FoxPro B-樹(shù)索引,并且不需要任何新類型的文件或者索引。它可以利用VFP的標(biāo)準(zhǔn)索引、壓縮索引,復(fù)合或結(jié)構(gòu)化索引。壓縮索引所產(chǎn)生的索引文件的大小只相當(dāng)于原來(lái)索引的六分之一大小。由于壓縮索引文件實(shí)際上更小,因而它們能被更快速地單獨(dú)處理。這就意味著,處理它們需要更少的磁盤存取,并且更大部分的索引可以保留在VFP內(nèi)存緩沖區(qū)中。雖然在理論上,復(fù)合或結(jié)構(gòu)索引與壓縮索引使用同樣的壓縮技術(shù)與方法,但實(shí)際上壓縮索引比復(fù)合或結(jié)構(gòu)索引操作還是稍快一些。所以,隨著數(shù)據(jù)庫(kù)的增大,使用壓縮索引可獲得較快的速度。RushMore不僅僅充分受益于空間更小的壓縮式索引,對(duì)原來(lái)的索引格式也同樣有效。當(dāng)程序執(zhí)行了一條應(yīng)用RushMore的命令時(shí),它會(huì)立即與匹配的記錄組合在一起,再由該命令去操作這一組記錄,顯然,它是將大型數(shù)據(jù)庫(kù)變成了一個(gè)小數(shù)據(jù)庫(kù),對(duì)小數(shù)據(jù)庫(kù)的操作當(dāng)然就會(huì)更快。
  2.2 RushMore優(yōu)化原則
  RushMore并不是對(duì)所有非SQL命令都能提高查詢效率。在NEXT、RECORD、ALL、REST四個(gè)范圍子句中,它只對(duì)ALL和REST有優(yōu)化效果;對(duì)于條件語(yǔ)句FOR和WHILE,它只對(duì)FOR語(yǔ)句優(yōu)化;在使用NOT條件創(chuàng)建索引時(shí)不能優(yōu)化;在使用了惟一索引(UNIQUE)時(shí)不能優(yōu)化;在內(nèi)存很小的計(jì)算機(jī)上處理數(shù)據(jù)量很大的表時(shí),RushMore可能會(huì)找不到足夠的內(nèi)存,也是不能優(yōu)化的。
  2.3 組合表達(dá)式的RushMore優(yōu)化原則
  在簡(jiǎn)單的語(yǔ)句中,VFP能根據(jù)優(yōu)化原則自動(dòng)選擇關(guān)閉還是開(kāi)啟RushMore。但是,實(shí)際案例中我們常常需要在FOR語(yǔ)句中使用AND、OR或NOT這三個(gè)邏輯操作符組成邏輯表達(dá)式來(lái)提高數(shù)據(jù)的檢索。那么在各種可優(yōu)化或不可優(yōu)化有表達(dá)式組合中,整個(gè)優(yōu)化結(jié)果是什么呢?表4給出了組合表達(dá)式的各種優(yōu)化結(jié)果。
  
  從表4中可以看出在很多情況下,組合表達(dá)式的結(jié)果是不能被優(yōu)化的。當(dāng)這些組合表達(dá)式再次組合成更加復(fù)雜的表達(dá)式時(shí)這些全部可優(yōu)化、部分可優(yōu)化或不可優(yōu)化的組合表達(dá)式會(huì)有一個(gè)什么樣的優(yōu)化結(jié)果呢?表5列出了這些優(yōu)化種類的結(jié)果。
  2.4 RushMore技術(shù)的優(yōu)化方法
  從優(yōu)化規(guī)則表中我們可以看出不同的表達(dá)式組合中優(yōu)化情況都不盡相同,在VFP中只要潛在可優(yōu)化的命令中的FOR子句表達(dá)式不能被RushMore優(yōu)化,RushMore就被自動(dòng)禁止。但在少數(shù)情況下,VFP自動(dòng)選擇的RushMore卻不能夠加快數(shù)據(jù)查詢。譬如說(shuō),如果程序中的潛在可優(yōu)化的命令修改了FOR子句中的索引關(guān)鍵字,RushMore的記錄集就已經(jīng)過(guò)時(shí)了,這時(shí),就應(yīng)當(dāng)禁止RushMore以保證獲得表的最新的信息。
  
  所以在特定時(shí)刻,我們可以用Set Optimize Off命令或NOOPTIMIZE子句對(duì)當(dāng)前命令關(guān)閉RushMore功能,使程序運(yùn)行效率達(dá)到一個(gè)最優(yōu)化的效果。
  
  3 結(jié)束語(yǔ)
  
  綜上所述,雖然VFP能夠自動(dòng)開(kāi)啟或關(guān)閉RushMore技術(shù)來(lái)提高查詢速度,但并不是每次都能得到一個(gè)最優(yōu)化的結(jié)果,我們應(yīng)該從實(shí)踐全局性來(lái)考慮整個(gè)程序的執(zhí)行過(guò)程,在不同地方人為地開(kāi)啟或關(guān)閉RushMore去獲得一個(gè)最佳的優(yōu)化結(jié)果。
  
  參考文獻(xiàn)
  [1]薩師煊,王珊.數(shù)據(jù)庫(kù)系統(tǒng)概論[M].北京:高等教育出版社,1997.
  [2]王利.全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)教程――VFP程序設(shè)計(jì)[M].北京:高等教育出版社,2005.
  [3]張洪舉.Visual FoxPro程序設(shè)計(jì)參考手冊(cè)[M].北京:人民郵電出版社,2004.

相關(guān)熱詞搜索:淺談 技術(shù) VFP 淺談VFP中的RUSHMORE技術(shù) 淺析vfp中的數(shù)據(jù)緩沖技術(shù) 技術(shù)實(shí)時(shí)熱點(diǎn)

版權(quán)所有 蒲公英文摘 www.91mayou.com