2017-04-24 42 views
0

我們存儲結構如下記錄: SSN,LNAME,FNAME 在數據文件中了lname我應該使用什麼樣的索引?

下令如果我們想了lname的索引,因爲大量的查詢搜索基於 姓,什麼樣的指標需要嗎?

+2

您能否在您的問題中添加更多細節並更具體? –

+0

嗨,假設我們存儲具有以下結構的記錄:Ssn,lname,fname 在lname上排序的數據文件中,需要什麼樣的索引? –

回答

1

從我的需求中可以得到,請嘗試將B樹索引添加到該特定列。

+1

讓我們考慮聚類索引,非聚類索引,主索引,二級索引是選項。你怎麼看? –

+0

集羣索引或主索引只能應用於主鍵,因爲由於多個可以具有相同的姓氏,所以您可以利用聚簇索引,因爲姓氏不能是主鍵。現在您唯一的選擇是二級索引或非聚集索引。有兩種非聚簇索引可用,基於HASH和B樹。是的,還有其他的,但這兩個是主要的。雖然基於散列有更好的性能結果,但我不適合LIKE或一些正則表達式。 B樹似乎是一個很好的選擇。 –

+0

等待,是不是不同於聚集索引的二級索引? –

0

對於人名,我建議複合INDEX(lname, fname)。這將有助於(在某種程度上)每一種:

WHERE lname = 'James' 
WHERE lname = 'James' AND fname LIKE 'R%' 
WHERE lname = 'James' AND fname = 'Rick' 

你的集羣PRIMARY KEY可能是SSN;這個指數也可能是一個輔助(非羣集)指數。

在MySQL中,BTree基本上是唯一的選擇。無論如何,BTree至少幾乎和哈希一樣好。

小心!存儲SSN是一個嚴重的安全問題。如果你的機器丟失了,或者它被侵入了,你將會陷入危機。同時,不要計劃讓我給你我的SSN。

相關問題