特定管理 > 配置您的 Windchill 環境 > 使用子字串索引最佳化前導與結尾萬用字元查詢
  
使用子字串索引最佳化前導與結尾萬用字元查詢
子字串是包含前導與結尾萬用字元的字串,例如 *ABC*。包含子字串條件之查詢的執行時間可能比對諸如 ABC* 等以萬用字元結尾之字串的查詢要長的多。標準資料庫索引無法有效地執行含子字串條件的查詢。
標準資料庫索引就像是各項目按姓氏排序的一個電話目錄。如果您知道確切的姓名,甚至是姓氏的前幾個字母,尋找特定項目就會又快又有效率。但如果您搜尋包含在該姓氏中之字母的字串,必須對每個個別項目進行查詢。您知道的字母為構成姓名之字母完整字串的子字串。就像使用電話目錄一樣,如果不知道字串的前導字元,標準資料庫索引是沒用的。
您可以建立額外的資料庫結構描述物件來支援對這些類型的查詢的有效執行,並改善一般使用者查詢回應時間。這些額外的資料庫結構描述物件稱為子字串索引。您可以針對使用子字串條件查詢之每個字串屬性建立子字串索引。建立子字串的索引可提高包含子字串之查詢的效能。基本上,此子字串索引會使用電話目錄中的每個項目,並將每個姓氏的較小部份儲存為個別索引項目。這可讓系統在僅提供一些字元時有效地尋找項目。
何時使用子字串索引
管理員可以使用諸如 TopSQL MBean 等 SQL 監視工具來識別佔用太多時間或系統資源的查詢。這些查詢可能會從子字串索引中獲益。例如,您可能發現有對零件的大量搜尋,且使用者通常搜尋零件名稱或編號的子字串。使用者也可能會警示管理員或 IT,使用前導萬用字元的查詢會花費比其他搜尋長很多的時間。
識別出在子字串條件搜尋中通常會牽涉到的屬性之後,您可以建立子字串索引來讓這些搜尋更有效地執行。
請記住,這些額外的子字串索引結構描述物件需要系統儲存空間,且其維護需要系統處理資源。這表示子字串索引可能不適合每個字串屬性。在額外的系統資源與一般使用者回應時間之間要有權衡。
建立子字串索引
欲建立子字串索引,您必須:
1. 在子字串索引組態檔中定義子字串
2. 執行 SubStringIndexTool 來建立子字串索引結構描述物件
3. 確保已將系統配置為將子字串索引與系統資料同步處理
向您的使用者傳遞什麼內容
使用子字串索引時,會針對高達某一數量的子字串最佳化查詢。這一數量為在組態檔中指定之 indexLengthjoinLimit 內容的乘積。例如,如果您的 indexLength 為 4 且 joinLimit 為 3,則子字串查詢的效能會在指定的字元數為 12 或更少時達到最佳。您應將此最佳字元數傳遞給您的使用者。如果使用者輸入比 indexLengthjoinLimit 內容的乘積更多的字元,查詢仍會運作,但不會是最佳。在查詢條件中指定的字元越多,結果集就會越精確。如果搜尋條件通常會超過最佳字元數,且使用者報告查詢效能不佳,您應該考慮增加 indexLength