麻豆激情视频在线_美女中文字幕视频_777婷婷天堂综合色吧_美女av免费观看_风间由美一区二区播放合集_亚洲a在线观看无码

天蠶在你身邊

不方便打電話?讓天蠶聯絡你

我們存在,我們思索,我們不斷進取首頁 >> 資訊 >> 網站建設知識
程序員的網站程序優化私房密集

天蠶重慶網絡公司:我們在進行系統或者我們叫它軟件,在開進行開發時,對它的數據庫以及結構,是需要作一些必要優化處理的,下面來看看詳細的介紹:

1. 程序優化

   a. 當只限取前面N條記錄時,不要用 select * ,然后再用ADO分頁
      改為 select top N 字段列表 這樣的語句會高效很多
  
   b. 統計記錄數時不要用 select * from .... 這樣的語句,改
用 select count(1) from .... 這樣會好很多

   c. 盡量避免使用 select * from table 這樣的sql語句,這樣會導致程序從數據庫里讀取太多無用的數據,一般來說應該使用
      select 字段1,字段2 from table 這種形式,只從數據庫里讀取必要的數據,這樣能大大提高程序讀取數據庫的效率
  
   d. 不要用嵌套查詢,比如
     
      <%
        sql = "select col1,col2 from a"
        set rs = server.createobject("adodb.recordset")
        rs.open sql,conn,1,1
        while not rs.eof
                sql2 = "select col1,col2 from b where id=" & rs("id")
                set rs2 = server.createobject("adodb.recordset")
                rs2.open sql2,conn,1,1 '這里用了嵌套查詢,效率會下降很多,如果數據庫的時候根本沒法運行
               
                    while not rs2.eof
                       
                        response.write rs("id") & "=" & rs2("name")
                       
                        rs2.movenext
                    
                     wend

                rs.movenext
        wend
      %>

      如果改為

      <%
        sql = "select a.id ,b.name from a left join b on b.id=a.id" '使用連表操作,并用具體的字段名代替 *,程序是高效很多
        set rs = server.createobject("adodb.recordset")
        rs.open sql,conn,1,1
        while not rs.eof
                       
                response.write rs("id") & "=" & rs("name")
                       
                rs.movenext
        wend
      %>
    

2. 數據庫結構優化
  
   a. 比如一些標志信息是否認證之類的字段要建索引卻沒有建
   b. 表沒有設主鍵,加上主鍵
   c. 外鍵一般都要加上索引

 


3. 對于 access 數據庫:

   access 數據是一個桌面型的數據庫系統,它只能應付一些數據量少且訪問量不大的網站,如果access的數據庫超過
  
   100M 以上,性能會急速下降,并且 access 數據庫的數據庫驅動程序只能應付同時15個進程共享,也就是說它最多只能
  
   允許15個人同時打開它,對于大訪問量的網站來說這是很低的一個數值,所以一般訪問量大或者是數據量大的網站一般

   要采用 sqlserver 或者 mysql 等高性能的數據庫服務器平臺。

   有很多人使用 access 數據庫時并沒有對數據庫的結構進行優化,這也是造成網站程序效率低下的另一個重要原因

   一般來說每個數據表都要設置一個主鍵,并且其外鍵一般都要建立索引,還有一些標志性的字段(如果標記一條信息是否是
  
   通過審核等)如果不是布爾型的話,一般來說也應該建立索引。

   在查詢程序優化方面 , 如果用 ADODB.Recoedset 自帶的分頁功能,也是存在問題,

   因為用ADO分頁的話,這個對象是先將很多的記錄選出來,加載到對象里(這將導致這個對象可能會加載成千上萬的記錄),
  
   再在對象里通過移動記錄游標等操作來達到定位到某一行的目的,當數據量大的時候,性能也會急速下降。

   如果采用 where RecID NOT IN(....) 這種結構的話,雖然記錄集不會加載很多的數據,但是在數據庫引擎在查詢時
  
  
   做這種NOT IN(...) 的比較是很費時間的,比如 NOT IN 的列表里有 1000 個記錄ID,這在查詢是將導致對整個數據表

   的每一條記錄都跟這1000個ID進行比較,比如數據表里有 3000 條記錄,那么執行這條 sql 的時候將導致 3000*1000 這么

   多次的比較,效率之低是可想而知的.

   對于分頁的優化方法:

   采用分步查詢,這個方法可能要對數據表的結構作一些修改.

       1. 數據表本身的主鍵( 比如是 RecID )應該是數字類型的。

       2. 要查詢分頁的時候

       (1). 先得出不應該包含在最終查詢結果里的記錄的最大ID號,比如
      
              比如要查詢第 100 條記錄以后的 N (N=每頁的記錄數) 條記錄,可這樣做:
              <%    
              SQLMAXID = "SELECT MAX(RecID) FROM(SELECT TOP 100 RecID FROM ChatRec WHERE RecID>0 ORDER BY RecID)"

              '這里只返回一個值,就是最大的ID
             
              %>         
         (2). 執行最終的數據查詢
             
              比如
              <%
             
              SQL = "SELECT TOP 每頁的記錄條數 * FROM ChatRec WHERE RecID>("& SQLMAXID &") ORDER BY RecID"

              '這里是找出 ID > MAXID 的前 N 條記錄
             
              %>

         這樣的話避免用 NOT IN(...) 這個語句,效率會提高很多

         說明:用這個方法有一點一定要注意的是子查詢跟主查詢都必須要按某個字段用相同的規則排序,比如像例子中的 ORDER BY RecID

         并且一般建議用主鍵來進行排序

4.asp程序中應盡量避免用 on error resume next
很多用戶會采用 on error resume next 來屏蔽掉出錯信息,這樣雖然可以讓訪客看不到出錯信息,界面友好一些,但是這樣可能會帶來非常嚴重的問題:當程序出錯后,如果沒有及時的捕獲異常,從而中止程序執行的話,很空間導致程序出現死循環,導致服務器當機,所以只有在非常必要的情況下才好使用 on error resume next ,并且在使用on error resume next后及時捕獲異常,如果出現錯誤就中止程序執行。比如:
<%
set conn = Server.CreateObject("ADODB.Connection")
connstr = "Driver={SQL Server};Server=db107.72dns.com;UID=abc;WD=abc;Database=abc"
on error resume next   '這里的用 on error resume next 是為了屏蔽連接數據庫時出錯的信息
err.clear
conn.open connstr
if err.number<>0 then  '這里開始及時捕獲異常,中止程序執行,否則很容易死循環而令服務器當機
    response.write "鏈接數據庫服務器出錯"
    response.end
end if
%>

天蠶重慶網絡公司總結: 如果網站的訪問量大并且數據庫查詢操作的任務比較重,要考慮采用自動生成靜態頁面然后定時自動更新的技術


地址:重慶市渝中區上清寺鑫隆達B座28-8

郵編:400015

電話:023-63612462

EMAIL:cnjl_net@163.com

渝ICP備09007657號-6

渝公網安備 50010302000872號

渝中區網站建設江津網站建設渝北網站建設南坪網站建設大渡口網站建設沙坪壩網站建設九龍坡網站建設巴南區網站建設
北碚網站建設江北網站建設永川網站建設萬盛網站建設梁平網站建設秀山網站建設大足網站建設天蠶網絡動態
主站蜘蛛池模板: 韩国一级淫一片免费放 | 91制片厂色版在线观看 | 亚洲精品无码一区二区四区 | 在线视频国产一区 | 国产免费黄色网址 | 亚洲国产精品无码久久一区二区 | 欧美久久综合网 | 人与禽交av在线播放 | 日本熟妇洗澡videos | 欧美日韩第一 | 欧美日韩一区二区三区在线看黄 | 国产精品久久久久精女同 | 福利一区和二区 | 国产日韩综合性色av | 不卡无在线一区二区三区观 | 48久久国产精品性色aⅴ人妻 | 黄色影片免费看 | 99久久综合国产精品二区 | 亚洲AV无码不卡私人影院 | 中文字幕色婷婷在线视频 | 纯欧美一级毛片免费 | 日韩不卡手机视频在线观看 | 亚洲一区二区三区中文字幕在线观看 | 久久久国产成人一区二区 | 天天摸夜夜摸爽爽狠狠婷婷97 | 婷婷激情综合色五月久久图片 | 农村妇女高清毛片一级 | 少妇嘿咻做爰吃奶摸视频网站 | 欧美特级黄色 | 欧美日韩一区二区三区精品 | 暖暖在线日本免费中文 | 亚洲色图网友自拍 | 青青草免费在线观看视频 | 国产成人综合精品无码 | 在线视频观看成人 | 在线免费视频一区二区 | 日韩一级片免费视频 | 天天干夜夜玩 | av在线影片 | 另类在线视频 | 国产精品一区二区三区四 |