本文主要向大家介紹的是正確優化SQL
Server資料庫的經驗總結,其中包括在對其進行優化的實際操作中值得大家注意的地方描述,以及對SQL語句進行優化的最基本原則,以下就是文章的主要內容描述。
優化資料庫的注意事項:
1、關鍵欄位建立索引。
2、使用存儲過程,它使SQL變得更加靈活和高效。
3、備份資料庫和清除垃圾數據。
4、SQL語句語法的優化。(可以用Sybase的SQL
Expert,可惜我沒找到unexpired的序列號)
5、清理刪除日誌。
SQL語句優化的基本原則:
1、使用索引來更快地遍歷表。
預設情況下建立的索引是非群集索引,但有時它並不是最佳的。在非群集索引下,數據在物理上隨機存放在數據頁上。合理的索引設計要建立在對各種查詢的分析和預測上。
一般來說:
①.有大量重復值、且經常有范圍查詢(between,
>,<
,>=,<
=)和order
by、group
by發生的列,可考慮建立群集索引
②.經常同時存取多列,且每列都含有重復值可考慮建立組合索引;
③.組合索引要盡量使關鍵查詢形成索引覆蓋,其前導列一定是使用最頻繁的列。
2、IS
NULL
與
IS
NOT
NULL
不能用null作索引,任何包含null值的列都將不會被包含在索引中。即使索引有多列這樣的情況下,只要這些列中有一列含有null,該列就會從索引中排除。也就是說如果某列存在空值,即使對該列建索引也不會提高性能。任何在where子句中使用is
null或is
not
null的語句優化器是不允許使用索引的。
3、IN和EXISTS
EXISTS要遠比IN的效率高。裡面關繫到full
table
scan和range
scan。幾乎將所有的IN操作符子查詢改寫為使用EXISTS的子查詢。
4、在海量查詢時盡量少用格式轉換。
5、當在SQL
SERVER
2000中
如果存儲過程只有一個參數,並且是OUTPUT類型的,必須在調用這個存儲過程的時候給這個參數一個初始的值,否則會出現調用錯誤。
6、ORDER
BY和GROPU
BY
使用ORDER
BY和GROUP
BY短語,任何一種索引都有助於SELECT的性能提高。注意如果索引列裡面有NULL值,Optimizer將無法優化。
7、任何對列的操作都將導致表掃描,它包括SQL
Server資料庫函數、計算表達式等等,查詢時要盡可能將操作移至等號右邊。
8、IN、OR子句常會使用工作表,使索引失效。如果不產生大量重復值,可以考慮把子句拆開。拆開的子句中應該包含索引。
9、SET
SHOWPLAN_ALL>10、謹慎使用游標
在某些必須使用游標的場合,可考慮將符合條件的數據行轉入臨時表中,再對臨時表定義游標進行操作,這樣可使性能得到明顯提高。
注釋:所謂的優化就是WHERE子句利用了索引,不可優化即發生了表掃描或額外開銷。經驗顯示,SQL
Server資料庫性能的最大改進得益於邏輯的資料庫設計、索引設計和查詢設計方面。反過來說,最大的性能問題常常是由其中這些相同方面中的不足引起的。
其實SQL優化的實質就是在結果正確的前提下,用優化器可以識別的語句,充份利用索引,減少表掃描的I/O次數,盡量避免表搜索的發生。其實SQL的性能優化是一個復雜的過程,上述這些只是在應用層次的一種體現,深入研究還會涉及SQL
Server資料庫層的資源配置、網路層的流量控制以及操作系統層的總體設計。
⑵ 如何設計合理高效的資料庫
一、 引言資料庫對於企業信息化的重要性是不言而喻的。資料庫存儲著現代企業最重要的數據,包括生產、經營、管理等各類數據,這些數據作為企業的核心信息,通過各類信息系統,為用戶提供及時准確的信息,幫助用戶分析,為用戶提供決策依據。為提高企業的工作效率,提升企業形象,具有傳統模式無法比擬的優勢。其中構建合理高效的資料庫,是資料庫建設關鍵之一。如何構建合理高效的資料庫是企業信息化過程要解決的問題。下面就資料庫的構建談談自己的一些經驗,希望能對大家有所幫助。 二、 設計資料庫之前
資料庫並不是憑空想像出來的,而是根據業務部門的需要設計符合業務需求的資料庫。因此在形成資料庫之前需要充分了解業務需求。 1. 充分理解業務需求。需求分析是整個設計過程的基礎,是最困難、最耗費時間的一步。在這期間通過與業務部門交流,了解用戶的想法以及工作流程,通過雙方多次交流,會形成初步的數據模型,當然這時的數據模型不會是最終的模型,還需要和用戶進行交流,並且在以後的信息系統開發過程中還會反復修改。 2. 重視輸入輸出。在定義資料庫表和欄位需求(輸入)時,首先應了解數據產生源和數據流程,也就是必需要知道每個數據在那兒產生,數據在那兒表現,以什麼樣的形式表現等等,然後根據用戶提供的報表或者設計出的報表、查詢和視圖(輸出)以決定為了支持這些輸出哪些是必要的表和欄位。 3. 創建數據字典和ER 圖表。ER 圖表和數據字典可以讓任何了解資料庫的人都明確如何從資料庫中獲得數據。ER圖對表明表之間關系很有用,而數據字典則說明了每個欄位的用途以及任何可能存在的別名。對SQL 表達式的文檔化來說這是完全必要的。 需要注意的是,在需求分析調研過程中,並不是一帆風順的,因為業務人員對於業務的理解不同,以及對於信息知識的缺乏,會影響需求分析的質量,為了提高質量,各方要用更多的時間交流與相互理解,業務部門需要精通業務的人員自始至終全力配合,而開發人員則盡量使用用戶理解的業務術語交流,這樣會避免出現理解不同而產生的歧義。 三、 設計合理的表結構
通常合理的表結構會減少數據冗餘,提高資料庫的性能。設計合理的表結構要遵循以下兩點。 1. 標准化和規范化 數據的標准化有助於消除資料庫中的數據冗餘。標准化有好幾種形式,但3NF(第三範式)通常被認為在性能、擴展性和數據完整性方面達到了最好平衡。簡單來說,遵守3NF標準的資料庫的表設計原則是:某個表只包括其本身基本的屬性,當不是它們本身所具有的屬性時需進行分解。表之間的關系通過外鍵相連接。它具有以下特點:有一組表專門存放通過鍵連接起來的關聯數據。 例如:某個存放單井信息及其有關油井生產日報信息的3NF資料庫就有兩個表:單井基礎信息和油井日報信息。日報信息不包含單井的任何信息,但表內會存放一個鍵值,該鍵指向單井基礎信息里包含該油井信息的那一行。 不過也有例外,有時為了效率的緣故,對表不進行標准化也是必要的。 2. 考慮各種變化 在設計資料庫的時候考慮到哪些數據欄位將來可能會發生變更。使資料庫更具擴展性,從而減少將來數據變更所帶來的損失。 例如,日期類型欄位,有時我們會考慮使用字元類型代替日期類型,因為在處理日期欄位上容易產生數據錯誤,所以我們就使用字元類型。這樣的例子還很多,在做前期設計時都要考慮的。 表結構的設計不是一次就能成功的,在信息系統開發過程中會存在數據讀取、錄入或統計困難,為了解決這些問題會修改表結構,或增加一些欄位,或修改一些欄位的屬性。這個過程不斷重復,因此不要想一次能成功。建議使用專門設計工具來做這些工作,筆者經常使用:SYBASE PowerDesigner ,當然還有其它的工具:ORACLE Designer 2000 ,ROSE等工具。這樣會使你的工作事半功倍。 四、 選擇合理的索引
索引是從資料庫中獲取數據的最高效方式之一。95%的資料庫性能問題都可以採用索引技術得到解決。 1. 邏輯主鍵使用唯一的成組索引,對系統鍵(作為存儲過程)採用唯一的非成組索引,對任何外鍵列採用非成組索引。考慮資料庫的空間有多大,表如何進行訪問,還有這些訪問是否主要用作讀寫。 2. 大多數資料庫都索引自動創建的主鍵欄位,但是可別忘了索引外鍵,它們也是經常使用的鍵,比如運行查詢顯示主表和所有關聯表的某條記錄就用得上。 3. 不要索引大型欄位(有很多字元),這樣作會讓索引佔用太多的存儲空間。如MEMO(備注)、TEXT(文本)等欄位。 4. 不要索引常用的小型表 不要為小型數據表設置任何鍵,假如它們經常有插入和刪除操作就更別這樣作了。對這些插入和刪除操作的索引維護可能比掃描表空間消耗更多的時間。如代碼表,或系統參數表。 五、 保證數據完整性
數據的完整性非常重要,這關繫到數據的准確性,不準確的數據是毫無價值的,因此保證數據的完整性非常重要。 1. 完整性實現機制:實體完整性:主鍵參照完整性: 父表中刪除數據:級聯刪除;受限刪除;置空值父表中插入數據:受限插入;遞歸插入 父表中更新數據:級聯更新;受限更新;置空值 DBMS對參照完整性可以有兩種方法實現:外鍵實現機制(約束規則)和觸發器實現機制用戶定義完整性:NOT NULL;CHECK;觸發器 以上完整性機制需要熟悉和掌握,它對於數據的完整性非常重要。 2. 用約束而非業務規則強制數據完整性 採用資料庫系統實現數據的完整性。這不但包括通過標准化實現的完整性而且還包括數據的功能性。在寫數據的時候還可以增加觸發器來保證數據的正確性。不要依賴於業務層保證數據完整性;它不能保證表之間(外鍵)的完整性所以不能強加於其他完整性規則之上。 3. 強制指示完整性 在有害數據進入資料庫之前將其剔除。激活資料庫系統的指示完整性特性。這樣可以保持數據的清潔而能迫使開發人員投入更多的時間處理錯誤條件。 4. 使用查找控制數據完整性 控制數據完整性的最佳方式就是限制用戶的錄入。只要有可能都應該提供給用戶一個清晰的價值列表供其選擇。這樣將減少鍵入代碼的錯誤和誤解同時提供數據的一致性。某些公共數據特別適合查找:性別代碼、單位代碼等。 5. 採用視圖 視圖是一個虛擬表,其內容由SQL語句定義,視圖不僅可以簡化用戶對數據的理解,也可以簡化他們的操作。那些被經常使用的查詢可以被定義為視圖,從而使得用戶不必為以後的操作每次指定全部的條件。另外通過視圖用戶只能查詢和修改他們所能見到的數據。資料庫中的其它數據則既看不見也取不到。資料庫授權命令可以使每個用戶對資料庫的檢索限制到特定的資料庫對象上,增強數據的安全性。 六、 結束語
資料庫的高效運行不僅需要技術上的支持,也需要硬體平台和網路的支持以及資料庫管理員的有效管理,本文只是從技術的角度說明如何提高資料庫的效率,但在實際應用過程中其它方面的支持也是不可缺少的,尤其是資料庫管理,資料庫建設是「三分技術,七分管理,十二分基礎數據」,因此對於資料庫管理一定要重視,在管理到位的情況下技術才能發揮應有的作用。
⑶ 有「資料庫開發經驗」是指什麼指開發的程序中使用資料庫還是開發過資料庫相關的程序
個人覺得,「開發的程序中使用過資料庫」和「開發過與資料庫相關的程序」本身沒有什麼太大的區別。
有「資料庫開發經驗」大意是說對資料庫比較熟知,尤其是對SQL語言比較精通。
⑷ 如何安裝sql server2014資料庫 百度經驗
方法/步驟
1
放入光碟或者復制到計算機盤符下
出現如下圖1-1-1所示的界面
點擊安裝,即可安裝成功
⑸ mysql 怎麼選擇資料庫 百度經驗
mysql是資料庫管理程序,你要選擇資料庫,可以使用sql語句中的use語法,比如 有資料庫,a、b、c,你要操作資料庫a,可以使用use a;來進行選擇。
⑹ 資料庫學習方法,請有經驗的人告知
資料庫原理學習方法經驗
有不少同學說資料庫原理難學,我深有同感。資料庫原理難在抽象,特別是有關「範式」和SQL語言的章節,學習起來往往感到力不從心。
自考的特點是覆蓋面廣但並不深,你不能臨時抓重點來應付考試,平時就要多花時間和精力來學習。但自考生由於工作繁忙或其他原因,需要掌握高效率的學習方法,有目的性、針對性地學習。其實,《資料庫原理》課程中需要記憶的東西並不多,這門課的考核要點在於應用。下面我就自己的經驗和大家探討一下這門課的學習方法。
掌握知識結構
《資料庫原理》的主要內容有SQL語言、關系代數、關系演算語言、資料庫設計與保護、關系理論等。其他一些有關關系資料庫管理系統實例與數據技術新發展的內容屬於了解范圍,學習這些知識可以擴寬你的眼界,但它們並不在考試范圍內。
關系代數、SQL語言的難度都不是很大。其中,SQL語言和關系代數(演算)要求掌握各種語句的應用,多做書中的例題可以幫助自己熟能生巧。最難的部分在於關系資料庫設計理論,很多概念比較抽象,難於理解,這部分需要花多點的時間來學習。
學習資料庫設計時必須要對整個資料庫設計流程有清晰的認識。從需求分析→概念結構設計→邏輯結構設計→資料庫物理→資料庫運行和維護,各階段的主要任務都要清楚明了。建議大家參照書中例題多做一些資料庫設計,會有很好的效果。
資料庫保護部分屬於需要多看多記的內容,資料庫設計章節的內容則屬於記憶加應用的類型,在熟記設計步驟的基礎上,要反復閱讀書中的例子以加深理解。第一範式,第二範式……這些概念非常抽象,是許多考生頭痛的問題。這一部分內容的學習關鍵是要抓住數據依賴關系來區分各種範式,要弄清改變各種範式最終的目的是優化資料庫,另外最好把各種概念應用到實際例子中來記憶。
認真做好習題
雖然我們並不提倡題海戰術,但在把基本知識復習好的基礎上適當地多做試題的確有助於我們順利通過考試。你可以從一些提供自考學習資源的網站上獲得試卷並將它們列印出來認真地做一遍。
理論實踐相結合
理論知識的學習可以開拓人的眼界。以前我自學資料庫知識,以為一個FoxBase就是資料庫管理系統,通過理論學習我才認識到自己只是井底之蛙,FoxBase只是一個小型的資料庫管理系統。
實踐可以讓你把抽象的理論知識理解、掌握得更透徹;光在紙上書寫SQL語言是紙上談兵,你可以找一些資料庫管理系統,如mySQL、msSQL,自己做一個資料庫用一用SQL語言,可以加深你的理解。如有機會,你還可以參加一個資料庫系統的實際項目設計,運用所學的資料庫設計理論來指導實踐,這樣可以進一步鞏固所學的理論知識。
⑺ 資料庫管理到底難不難,IT大佬們分享下經驗
這個要分情況,作為IT老狗混跡過的企業不在少數,每個企業情況不一樣,資料庫管理難度也不一樣。有的企業用的還是傳統的資料庫管理系統,非常的繁瑣復雜,關鍵靈活性、穩定性和安全性也不行,即使天天加班都不一定能做好工作。但有的企業,利用先進資料庫管理工具的幫助,資料庫管理可以實現一鍵式操作,非常方便快捷。
在這里跟大家推薦個非常好用的資料庫管理工具,就是Nutanix最近推出了資料庫管理相關的組合產品(NDB)。NDB 面向 PostgreSQL®、MySQL®、Microsoft® SQL 伺服器、Oracle® 資料庫等資料庫引擎,簡化了在混合多雲環境下的資料庫管理,具有非常強大的自動化功能,支持資料庫實例的配置、擴展、修補、保護和克隆,還可以幫助客戶在本地和公有雲上為開發人員提供資料庫即服務( DBaaS )和易用的自助式資料庫體驗,是企業進行資料庫管理非常有力的工具,大家可以試試∞
⑻ Help!!!!有資料庫工作經驗者請進
其實資料庫軟體建議你這兩個都學一學,當然先學SQL Server好一點,因為這個相對容易一些
Oracle主要用作大型資料庫,價格昂貴,一般的單位是用不起的,Sql server則相對便宜一點,且中小型企業用這個的最多
C#是一種全新的純面向對象語言,號稱是集成了C語言和C++的諸多優點,也看得出來是借鑒了JAVA的相當多優勢,發展前景是很樂觀的
Delphi在以前是被稱為開發資料庫應用的最有效工具,現在出來的C#在這方面也相當不錯
很多軟體公司用Delphi開發了幾年之後因其軟體已經成熟,不會輕易轉向C#,但是也有很多公司對於C#這種新技術很感興趣
Java以其開源性獲得了許多大公司的青睞,網上有很多現成的模塊可用,用JAVA開發軟體的好處是成本較低(純論正版途徑)
現在軟體技術的主流是.Net(包括C#)和JAVA,業界很多人的觀點是以後的開發會越來越側重於C#,但是JAVA在很多大軟體公司仍然佔有相當重的比例
所以就看你自己選擇的方向了,一般這幾個中學好一個就可以了,但是我是幾個都學,側重C# 呵呵
以上只是本人的一點膚淺認識,僅做參考