發表文章

目前顯示的是 1月, 2020的文章

sql server 設定index FillFactor(填滿因素)

圖片
SQL SERVER儲存資料的單位為Page(頁面),在建立Index時,SQL SERVER預設會在Page填滿資料(FillFactor為0或100),此時如果新增資料時,因為Page已滿,Index所以必須使用另一個Page儲存資料,在一連串的異動資料後,會導致資料散佈在各Page上,當SQL SEVER要讀取Index時,因為資料散佈在Page而使效能低落。為了避免因為異動資料而引起的效能低落,在建立Index時可以指定Page保留一定的空間。 當Page有保留一定空間(假設FillFactor為80)時,新增的會插入現在的Page的預留空間,如此資料就不會分散。 如果FillFactor設定太小(如30),會造成建立Index時,每一個Page都只用30%的空間,這樣同樣會有資料散佈的問題以及會浪費儲存空間。 設定FillFactor可以搭配PAD_INDEX,該選項的為FillFactor的設定也套用在Index的中間(intermediate-level)。 使用 fill factor 選項,主要指定 Microsoft SQL Server 在使用現有的資料建立新索引時,應該在每一頁填滿多少空間。填滿因數會影響效能,因為當頁面填滿之後,SQL Server 就必須花費時間進行頁面的分割。 PS: A、填滿因數的預設值為 0;有效值介於 0 到 100 之間。當 FILL FACTOR 設定為 0 或 100 時,分葉層級會完全填滿。 B、填滿因數只會用於建立或重建索引時。所有分頁都不會保持在特定的填滿程度。 --檢視資料庫中所有的index SELECT DB_NAME() DBName, OBJECT_NAME([object_id]) AS TableName, name AS IndexName, is_primary_key, is_unique, type_desc, fill_factor, has_filter, filter_definition FROM SYS.INDEXES WHERE  OBJECT_NAME([object_id]) IN (SELECT Table_Name FROM INFORMATION_SCHEMA.CONSTRAINT_T

sql server 好用的一些管理指令

--找出最有用的索引和建立索引的方法 SELECT avg_user_impact AS average_improvement_percentage, avg_total_user_cost AS average_cost_of_query_without_missing_index, 'CREATE INDEX ix_' + [statement] + ISNULL(equality_columns, '_') + ISNULL(inequality_columns, '_') + ' ON ' + [statement] + ' (' + ISNULL(equality_columns, ' ') + ISNULL(inequality_columns, ' ') + ')' + ISNULL(' INCLUDE (' + included_columns + ')', '') AS create_missing_index_command FROM sys.dm_db_missing_index_details a INNER JOIN sys.dm_db_missing_index_groups b ON a.index_handle = b.index_handle INNER JOIN sys.dm_db_missing_index_group_stats c ON b.index_group_handle = c.group_handle WHERE avg_user_impact > = 40 -- 查出目前系統" 從開機" 到目前為止,查詢中沒有使用到Index的TABLE(也就是使用Table Scan的查詢有那些) SELECT Top 10     statement AS [database.scheme.table],     column_id , column_name, column_usage,     migs.user_seeks, migs.user_scans,    

java讀取EXCEL檔案(XLSM)

圖片
引用下列的JAR檔 IMPORT下列3項 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.WorkbookFactory; // 讀取EXCEL資料 String path = "c:\\work\\"; String fileName = "123.xlsm"; InputStream stream = new FileInputStream(path + fileName); File f = new File(path + fileName); //把EXCEL檔OPEN起來 org.apache.poi.ss.usermodel.Workbook workbook = WorkbookFactory.create(f); System.out.println(workbook); int numberOfSheets = workbook.getNumberOfSheets(); System.out.println(numberOfSheets); org.apache.poi.ss.usermodel.Sheet sheet = null; sheet = workbook.getSheet("sheet1");//sheet1sheet1");//sheet1名稱 // 讀取sheet的CELL資料 Row row = sheet.getRow(1);// 數字是從0開始,所以對到實際的數字要減1 Cell cell = row.getCell(4);// 數字是從0開始,所以對到實際的數字要減1 if (cell != null) { workManID = cell.toString(); } //完畢時workBook要CLOSE workbook.close();