2015-10-22 40 views
1

對SQL中使用concat的基於函數的索引有點困惑。使用concat SQL的基於函數的索引

我有一個問題,我需要「創建一個基於函數的索引,可能會增加查詢的速度」,並且查詢是關於有多少名角色共享相同的名字和姓氏。

我該解決方案是:

Create index Fname_Lname on ACTOR (CONCAT (first_name , last_name)); 

我相信它的工作原理,但我不知道它是如何工作和功能這使得它比一般的查詢速度更快。

希望能儘快得到一些幫助。

感謝

數據庫下面的流程...

Database Scheme

+0

爲什麼這個標籤爲「mysql」? – rlanvin

+0

您應該向我們展示問題查詢和表結構。 –

+0

@rlanvin and ..現在addd中的圖像 –

回答

0

的CONCAT是沒有必要的,你只給出2列,會做你在找什麼。

Create index Fname_Lname on ACTOR (first_name , last_name); 

您可以這樣做,因爲名稱組合不是唯一的。但是,這不適用於主鍵或唯一鍵。

+0

但如數據庫計劃中所示,我在問題中添加..這個指數做什麼不同..?如果我們添加concat,它會有所作爲嗎?? @Octopi –

+0

實質上,mysql並不需要你去捕捉值,以達到你正在做的事情。它有點爲了創建索引而自行完成。實質上,在第一個和最後一個名字被拼接的地方不存在列。然而,這是如何加快搜索名字和姓氏。 –