[英]define mysql indexing
我知道這兩個問題的答案,但我不能以准確的方式向面試官揭示這些答案:
請給我一個非常簡單的定義來解決這些問題嗎?
索引 ,是創建索引的過程。 索引是允許SQL(或更一般地,DBMS或搜索引擎)以非常有效的方式基於它們包含的一個(或幾個)字段的值來定位記錄的結構。
例如,數據庫可以在包含學生記錄的表格中包括他們的學生ID,他們的姓名,出生日期,電話號碼......通過在電話號碼上創建索引,我們可以根據電話號碼搜索學生。 在沒有索引的情況下,系統會找到相同的記錄,但是這個操作可以通過查看每個記錄並與所需的電話號碼進行比較來進行。
FullText Indexing是為一個(或多個包含文本的字段)創建索引的過程。 與基於將字段的完整值(或可能是簡單的正則表達式)與期望的搜索值進行比較的常規索引不同,FullText索引可以基於在字段內找到的單詞來定位記錄。
例如,書目數據庫可能包含描述書籍的記錄,包括ISBN,作者,標題,類型,價格......等字段。 字段標題上的全文索引(有時稱為“目錄”)將允許在搜索時通過說“人”這個詞來有效地定位標題為“老人與海”的書。
全文引擎通常具有與文本有關的語言概念的內置和參數化“理解”。 例如,“噪音詞”(也稱為“停用詞”)是在文本中經常找到的詞(例如“the”,“and”,“of”,“in”,in English)可以被忽略,目的是最小化索引大小並使更具選擇性的單詞搜索更有效。 此外,全文引擎可能會知道一個單詞的各種語法形式,比如單數和復數形式的單詞(如英寸和英寸,腳和腳,貓和貓),或動詞的結合(如Catch,Catching)和解釋或解釋,口譯,口譯)。 由於這種語法意識,FullText引擎可以(如果這樣指示)定位單詞,即使它們與搜索條件不完全匹配。
FullText引擎通常還公開一種搜索語言/語法,允許用戶指定所需搜索的特定元素。 例如,在單詞“man”的5個單詞中搜索單詞“sea”。 或者找到“湖”或“海洋”這個詞和“水”等字樣。
mysql中的索引是從列中的每個值(或一組列中的值)到包含該列中該值的行(或列集中的那些值)的映射。
列上的全文索引是從每個單詞(通常由空格分隔)到包含該單詞的行集的映射。
正常指數:id:1“bar”id:2“foo baz”
搜索“foo” - >沒有結果。 搜索“foo baz” - >行ID:2搜索“bar” - >行ID:1
全文索引:id:1“bar”id:2“foo baz”
搜索“foo” - >行ID:2搜索“foo baz” - >行ID:2搜索“bar” - >行ID:1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.