程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 索引的優化收藏

索引的優化收藏

編輯:關於MYSQL數據庫

索引是數據庫調優重要的一方面,索引占用大量的表空間,所以索引必須要定期來維護。就目前的數據庫而言,索引大概可以分為兩個類型,以Oracle、db2,msql為代表的行索引,而以sysbase為代表的列索引(位索引),下面就以行索引和大家做一詳細的探討。

1、索引占用大量的空間:

----------建立測試表
if object_id('ppp') is null
drop table ppp
go
create table ppp (a int , b XML)
insert into ppp
select 1,'dsfsd'

-------------查看表空間
exec sp_spaceused ppp
/*
ppp 1 16 KB 8 KB 8 KB 0 KB
*/
-------建立非聚湊索引
create index index_name on ppp(a)

-------------查看表空間
exec sp_spaceused ppp
/*
ppp 1 32 KB 8 KB 24 KB 0 KB
*/

從上邊的例子看出 索引占用大量表空間

2、建立主鍵的時候,數據庫引擎會自動建立聚湊索引,這對索引是個浪費,因為很少有人把主鍵當搜索條件。

3、索引的填充因子是索引頁面的填充率的概念,如果填充小子設置的大,就容易插入,這樣的索引頁面的數據比較松散,查詢比較困難,如果填充因子小,查詢容易,插入就困難,一般我建議用40-50就可以。但是sql 2005在新建索引的時候,索引的填充因子默認為0

4、要定期對索引進行分析,下邊以例子來說明:

---查詢索引的名字
sp_helpindex join_product_ty

---分析索引
dbcc showcontig (join_product_ty,PK_join_product_ty)
/*

DBCC SHOWCONTIG 正在掃描 'join_product_ty' 表...
表: 'join_product_ty'(1030176803);索引 ID: 1,數據庫 ID: 8
已執行 TABLE 級別的掃描。
- 掃描頁數.....................................: 1475
- 掃描擴展盤區數...............................: 188
- 擴展盤區開關數...............................: 188
- 每個擴展盤區上的平均頁數.....................: 7.8
- 掃描密度[最佳值:實際值]....................: 97.88%[185:189]
- 邏輯掃描碎片.................................: 0.07%
- 擴展盤區掃描碎片.............................: 2.13%
- 每頁上的平均可用字節數.......................: 4324.2
- 平均頁密度(完整)...........................: 46.58%
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。

*/

參數的作用,請參考msdn。

5、要定期對索引進行重建

DECLARE @database_name sysname
DECLARE @syntax sysname

DECLARE CUR_database CURSOR FOR
SELECT name FROM sysobjects where xtype = 'u'
OPEN CUR_database

FETCH NEXT FROM CUR_database INTO @database_name
WHILE @@FETCH_STATUS = 0

BEGIN
SELECT @syntax = 'DBCC DBREINDEX (, '''',0)'
EXEC (@syntax)

PRINT @database_name + '重建索引完成'
FETCH NEXT FROM CUR_database INTO @database_name
END

--release memory
CLOSE CUR_database
DEALLOCATE CUR_database

GO
DBCC CHECKDB
GO

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved