  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		hokwoktat
 
 
  註冊時間: 2005-09-01 文章: 8
 
  第 1 樓
  | 
		
			
				 發表於: 星期五 九月 08, 2006 11:01 pm    文章主題: 請問在已經很慢的 NOVELL IPX網路上使用甚麼 VFP TABLE SCAN指令而令執行速度更慢 ? | 
				     | 
			 
			
				
  | 
			 
			
				| 請問在已經很慢的 NOVELL IPX網路上使用甚麼 VFP TABLE SCAN指令而令執行速度更慢 ? | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		liangszpt
 
  
  註冊時間: 2004-11-18 文章: 263 來自: な东省深圳市
  第 2 樓
  | 
		
			
				 發表於: 星期六 九月 09, 2006 3:20 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				SCAN、SET FILTER TO 指令,都是会一条一条地扫描,每一次都从客户端到服务器来回地进行条件比较的,这样的确会很慢。
 
建议改成SQL 批令,待服务端得出结果才回传回来。
 
或善用TABLE 的INDEX,多年前我做过的案例(很旧的),使用的方法是这样:例如:
 
LOCAL lcSearchString
 
 
lcSearchString = ?????
 
 
SELECT MYTABLE
 
SET ORDER TO KEY1                 &&之前已经建立的
 
LOCATE FOR FIELD_NAME = lcSearchString
 
DO WHILE !EOF() AND FIELD_NAME = lcSearchString
 
     .......
 
     SELECT MYTABLE
 
     SKIP
 
ENDDO
 
这样相对的好处是你只处理了符合条件的记录,而不用对整个TABLE都扫描一次,适合记录数多的情况。
 
 
FIELD_NAME 是你要使用到的FIELD。
 
lcSearchString是一个变数,是你要搜索的值。
 
KEY1是你之前已经建立的INDEX | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		bin1x
 
 
  註冊時間: 2004-08-27 文章: 462
 
  第 3 樓
  | 
		
			
				 發表於: 星期一 九月 11, 2006 8:39 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				可是我之前有看過一本書
 
它說了很多條讓foxpro 加速的規則
 
其中一條
 
就是用scan for ......取代 do while 迴圈
 
至於set filter ,資料庫大時是一定會感受到的 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |