㈠ sql Server優化如何通過3個階段來完成 (1)
1.查詢分析 在查詢分析階段,SQL Server優化器查看每一個由正規查詢樹代表的子句,並判斷它是否能被優化。SQL Server優化一般會盡量優化那些限制掃描的子句。例如,搜索和/或合並子句。但是不是所有合法的SQL語法都可以分成可優化的子句,如含有SQL不等關系符「<>」的子句。 因為「<>」是1個排斥性的操作符,而不是1個包括性的操作符,所在掃描整個表之前無法確定子句的選擇范圍會有多大。當1個關系型查詢中含有不可SQL Server優化的子句時,執行計劃用表掃描來訪問查詢的這個部分,對於查詢樹中可優化的SQL Server子句,則由優化器執行索引選擇。 2.索引選擇 對於每個可優化的子句,優化器都查看資料庫系統表,以確定是否有相關的索引能用於訪問數據。只有當索引中的列的1個前綴與查詢子句中的列完全匹配時,這個索引才被認為是有用的。因為索引是根據列的順序構造的,所以要求匹配是精確的匹配。 所以在設計過程中,要根據查詢設計准則仔細檢查所有的查詢,以查詢的優化特點為基礎設計索引。 (1)比較窄的索引具有比較高的效率。對於比較窄的索引來說,每頁上能存放較多的索引行,而且索引的級別也較少。所以,緩存中能放置更多的索引頁,這樣也減少了I/O操作。 (2)SQL Server優化器能分析大量的索引和合並可能性。所以與較少的寬索引相比,較多的窄索引能向優化器提供更多的選擇。但是不要保留不必要的索引,因為它們將增加存儲和維護的開支。對於復合索引、組合索引或多列索引,SQL Server優化器只保留最重要的列的分布統計信息,這樣,索引的第1列應該有很大的選擇性。 (3)表上的索引過多會影響UPDATE、INSERT和DELETE的性能,因為所有的索引都必須做相應的調整。另外,所有的分頁操作都被記錄在日誌中,這也會增加I/O操作。 (4)對1個經常被更新的列建立索引,會嚴重影響性能。 (5)由於存儲開支和I/O操作方面的原因,較小的自組索引比較大的索引性能更好一些。但它的缺點是要維護自組的列。 (6)盡量分析出每一個重要查詢的使用頻度,這樣可以找出使用最多的索引,然後可以先對這些索引進行適當的優化。 (7)查詢中的WHERE子句中的任何列都很可能是個索引列,因為優化器重點處理這個子句。 (8)對小於1個范圍的小型表進行索引是不劃算的,因為對於小表來說表掃描往往更快而且費用低。 (9)與「ORDER BY」或「GROUP BY」一起使用的列一般適於做分族索引。如果「ORDER BY」命令中用到的列上有分簇索引,那麼就不會再生成1個工作表了,因為行已經排序了。「GROUP BY」命令則一定產生1個工作表。 (10)分簇索引不應該構造在經常變化的列上,因為這會引起整行的移動。
㈡ 如何建立資料庫並使用資料庫,需要什麼硬體
硬體:
一台電腦(500G硬碟C盤需要50G以上的硬碟空間),micrsoft系統
軟體:
資料庫軟體(SQL
Server
或
MySql
或MS
SqlServer或oracle)
設計:
新建資料庫(庫名,多大,放在哪,許可權等等)
怎麼設計表,表的欄位有哪些,表與表之間有什麼關聯,表是否要建主鍵,外鍵,索引等等.
還要看你的數據量有多大,安全性要求有多高,是否需要備份等等.
㈢ oracle job 時間每五分鍾執行怎麼寫
oracle job 時間每五分鍾執行:
begin
sys.dbms_job.submit(job => :job,
what => '一個存儲過程;',
Interval =>TRUNC(sysdate,'mi') + 5/ (24*60));
commit;
end;
其中:如果改成TRUNC(sysdate,'mi')+ 10/ (24*60) 就是每10分鍾執行次。每秒鍾執行次:Interval => sysdate+ 1/(24 * 60 * 60)。如果改成sysdate + 10/(24 *60 * 60)就是10秒鍾執行次。
使用dbms_job.submit方法過程,這個過程有五個參數:job、what、next_date、interval與no_parse:
1、job參數是輸出參數,由submit()過程返回的binary_ineger,這個值用來唯一標識一個工作。一般定義一個變數接收,可以去user_jobs視圖查詢job值。
2、what參數是將被執行的PL/SQL代碼塊,存儲過程名稱等。
3、next_date參數指識何時將運行這個工作。
4、interval參數何時這個工作將被重執行。
5、no_parse參數指示此工作在提交時或執行時是否應進行語法分析——true,默認值false。指示此PL/SQL代碼在它第一次執行時應進行語法分析,而FALSE指示本PL/SQL代碼應立即進行語法分析。
(3)sql頻度擴展閱讀:
1、每天定時執行
例如:每天的凌晨1點執行
Interval =>TRUNC(sysdate) + 1 +1/ (24)
2、每周定時執行
例如:每周一凌晨1點執行:
Interval =>TRUNC(next_day(sysdate,'星期一'))+1/24
3、每月定時執行
例如:每月1日凌晨1點執行:
Interval=>TRUNC(LAST_DAY(SYSDATE))+1+1/24
4、每季度定時執行
例如每季度的第一天凌晨1點執行:
Interval =>TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24
㈣ sql資料庫設計樣例
資料庫技術是信息資源開發、管理和服務的最有效的手段。隨著計算機技術、通信技術和網路技術的發展,資料庫的應用范圍越來越廣泛,已滲透到社會的各個領域。從小型的單項事務處理系統到大型復雜的信息系統大都採用先進的資料庫技術來保持系統數據的整體性、完整性和共享性。目前,資料庫的建設規模、資料庫信息的大小和使用頻度已成為衡量一個國家或地區信息化程度的重要標識之一。
資料庫設計時間里資料庫及其應用系統的技術,是信息系統開發和建設中的核心技術,具體說,資料庫設計是指對於一個給定的應用環境,構造最優的資料庫模式,建立資料庫及其應用系統,使之能夠有效地存儲數據,滿足各種用戶的應用需求(信息要求和處理要去)。
在資料庫領域內,使用資料庫的各類系統通常被稱為資料庫應用系統。資料庫技術和產品是計算機領域中最為活躍的部分之一,資料庫技術與產品的發展總是與計算機技術的發展密切相關,從主機到現在的Internet/Intranet及網路計算。資料庫總是站在技術的最前沿。
本系統採用了SQL SERVER 2008資料庫作為後台資料庫,SQL SERVER 2008是一個真正的多用戶、多線程SQL資料庫伺服器。
3.2 庫表概要設計
共分為以下四個資料庫表:
(1) 用戶登陸信息表: Logintable
(2) 客戶資料表:nomalpeopletable
(3) 員工信息表: workpeopletable
(4) 購買商品表:ordertable
(5) 全國城市表:Citytable
(6) 食品信息表:Goodstable
Logintable(登錄驗證表)
列名 數據類型 是否可以為空 備注
controllerId int 不 管理員工號
Password nvarchar(50) 不 登錄密碼
Type Int 不 1為普通管理員;2為高級管理員
Clienttable(客戶信息表)
列名 數據類型 是否可以為空 備注
clientName nvarchar(50) 不 客戶名稱
clientOriginId Int 不 客戶來源(外鍵對應controllertable中,controllerId)
clientSort nvarchar(50) 不 客戶類別(可選內容為工程商、代理商、工程甲方)
clientCity nvarchar(50) 不 所在區域(可選框,全國的各個城市)
clientPhone nvarchar(50) 不 聯系電話
clientprincipal nvarchar(50) 不 聯系人
clientMobile nvarchar(50) 可以 手機
clientAddress nvarchar(50) 不 聯系地址
controllertable(員工信息表)
列名 數據類型 是否可以為空 備注
controllerId int 不 管理員工號,隨機數
name nvarchar(50) 不 員工姓名
sex Char 不 員工性別
study Char 不 員工學歷
worktime nvarchar(50) 不 從業時間
purchasetable(客戶購買商品表)
列名 數據類型 是否可以為空 備注
Id Int 不 主鍵自增
clientName nvarchar(50) 不 企業名稱
Money Money 不 購買金額
Time nvarchar(50) 不 購買時間
controllerId Int 不 (所屬管理員)外鍵對應controllertable中,controllerId
Text nvarchar(50) 不 產品名稱
citytable(全國城市表)
列名 數據類型 是否可以為空 備注
Id Int 不 主鍵自增
City nvarchar(50) 不 城市名(如:安徽合肥)
goodsTable(物品信息表)
列名 數據類型 是否可以為空 備注
Id Int 不 主鍵自增
Shopname nvarchar(50) 不 物品名稱
unitprice Money 不 物品單價
不懂問我!我很在行的!~
㈤ SQL Server 2000如何進行數據管理、查詢,及其數據字典的設置
數據管理和數據字典兩者相互相乘,不要獨立地分開。
sql server 2000說實話沒怎麼來開發過,從我其他項目中系統建設的角度給你提幾點建議把:
1、首先要分析對象,即你這個系統的受眾有哪些,這些受眾都有什麼類型的需求,並且做一個頻度的分析,這樣有利於下一步的數據字典設計。
2、根據上一步的分析提煉出基礎數據原單位,屬性是什麼樣子的,設計數據字典,包括數據結構、基礎參數。
3、再做一個對未來數據量的估算,包括某段時間後數據的增長情況,哪些數據表的操作頻度如何以及受眾對某些信息的操作頻度,以便建立有效的索引、視圖和存儲過程等。
4、查詢屬於受眾操作的一類動作屬性,第二部完成後這個問題基本上一並解決了。
㈥ 急:oracle 30分鍾統計一次數據怎麼做
SELECT CASE
WHEN SUBSTR(TO_CHAR(SYSDATE,'HH24MI'),2,4) < 30 THEN SUBSTR(TO_CHAR(SYSDATE,'HH24MI'),0,2)||'-前半小時'
ELSE
SUBSTR(TO_CHAR(SYSDATE,'HH24MI'),0,2)||'-後半小時'
END H,
COUNT(*)
FROM DUAL;
試試我這個吧,前半小時和後半小時的數據分開了,其他和你的一樣就行,這樣應該可以完成你的統計要求了!
㈦ sql資料庫設計實例
資料庫技術是信息資源開發、管理和服務的最有效的手段。隨著計算機技術、通信技術和網路技術的發展,資料庫的應用范圍越來越廣泛,已滲透到社會的各個領域。從小型的單項事務處理系統到大型復雜的信息系統大都採用先進的資料庫技術來保持系統數據的整體性、完整性和共享性。目前,資料庫的建設規模、資料庫信息的大小和使用頻度已成為衡量一個國家或地區信息化程度的重要標識之一。 資料庫設計時間里資料庫及其應用系統的技術,是信息系統開發和建設中的核心技術,具體說,資料庫設計是指對於一個給定的應用環境,構造最優的資料庫模式,建立資料庫及其應用系統,使之能夠有效地存儲數據,滿足各種用戶的應用需求(信息要求和處理要去)。 在資料庫領域內,使用資料庫的各類系統通常被稱為資料庫應用系統。資料庫技術和產品是計算機領域中最為活躍的部分之一,資料庫技術與產品的發展總是與計算機技術的發展密切相關,從主機到現在的Internet/Intranet及網路計算。資料庫總是站在技術的最前沿。 本系統採用了SQL SERVER 2008資料庫作為後台資料庫,SQL SERVER 2008是一個真正的多用戶、多線程SQL資料庫伺服器。 3.2 庫表概要設計 共分為以下四個資料庫表: (1) 用戶登陸信息表: Logintable (2) 客戶資料表:nomalpeopletable (3) 員工信息表: workpeopletable (4) 購買商品表:ordertable (5) 全國城市表:Citytable (6) 食品信息表:Goodstable Logintable(登錄驗證表) 列名 數據類型 是否可以為空 備注 controllerId int 不 管理員工號 Password nvarchar(50) 不 登錄密碼 Type Int 不 1為普通管理員;2為高級管理員 Clienttable(客戶信息表) 列名 數據類型 是否可以為空 備注 clientName nvarchar(50) 不 客戶名稱 clientOriginId Int 不 客戶來源(外鍵對應controllertable中,controllerId) clientSort nvarchar(50) 不 客戶類別(可選內容為工程商、代理商、工程甲方) clientCity nvarchar(50) 不 所在區域(可選框,全國的各個城市) clientPhone nvarchar(50) 不 聯系電話 clientprincipal nvarchar(50) 不 聯系人 clientMobile nvarchar(50) 可以 手機 clientAddress nvarchar(50) 不 聯系地址 controllertable(員工信息表) 列名 數據類型 是否可以為空 備注 controllerId int 不 管理員工號,隨機數 name nvarchar(50) 不 員工姓名 sex Char 不 員工性別 study Char 不 員工學歷 worktime nvarchar(50) 不 從業時間 purchasetable(客戶購買商品表) 列名 數據類型 是否可以為空 備注 Id Int 不 主鍵自增 clientName nvarchar(50) 不 企業名稱 Money Money 不 購買金額 Time nvarchar(50) 不 購買時間 controllerId Int 不 (所屬管理員)外鍵對應controllertable中,controllerId Text nvarchar(50) 不 產品名稱 citytable(全國城市表) 列名 數據類型 是否可以為空 備注 Id Int 不 主鍵自增 City nvarchar(50) 不 城市名(如:安徽合肥) goodsTable(物品信息表) 列名 數據類型 是否可以為空 備注 Id Int 不 主鍵自增 Shopname nvarchar(50) 不 物品名稱 unitprice Money 不 物品單價 不懂問我!我很在行的!~
㈧ sql能否在非主屬性列上建立索引
什麼情況下設置索引
動作描述使用聚集索引使用非聚集索引
外鍵列應應
主鍵列應應
列經常被分組排序(orderby)應應
返回某范圍內的數據應不應
小數目的不同值應不應
大數目的不同值不應應
頻繁更新的列不應應
頻繁修改索引列不應應
一個或極少不同值不應不應
建立索引的原則:
1)定義主鍵的數據列一定要建立索引。
2)定義有外鍵的數據列一定要建立索引。
3)對於經常查詢的數據列最好建立索引。
4)對於需要在指定范圍內的快速或頻繁查詢的數據列;
5)經常用在WHERE子句中的數據列。
6)經常出現在關鍵字orderby、groupby、distinct後面的欄位,建立索引。如果建立的是復合索引,索引的欄位順序要和這些關鍵字後面的欄位順序一致,否則索引不會被使用。
7)對於那些查詢中很少涉及的列,重復值比較多的列不要建立索引。
8)對於定義為text、image和bit的數據類型的列不要建立索引。
9)對於經常存取的列避免建立索引
9)限製表上的索引數目。對一個存在大量更新操作的表,所建索引的數目一般不要超過3個,最多不要超過5個。索引雖說提高了訪問速度,但太多索引會影響數據的更新操作。
10)對復合索引,按照欄位在查詢條件中出現的頻度建立索引。在復合索引中,記錄首先按照第一個欄位排序。對於在第一個字
段上取值相同的記錄,系統再按照第二個欄位的取值排序,以此類推。因此只有復合索引的第一個欄位出現在查詢條件中,該索引才可能被使用,因此將應用頻度高
的欄位,放置在復合索引的前面,會使系統最大可能地使用此索引,發揮索引的作用。
㈨ 如何做SqlServer 數據查詢優化!
一、建立索引
二、建立存儲過程
三、只查詢您所需要的數據,不要把所有數據都查詢出來,防止數據冗餘。
四、對於大量及海量數據一般還要建立分區