簡體   English   中英

Sphinx問題:構建數據庫

[英]Sphinx question: Structuring database

我正在開發一種具有徑向搜索,全文搜索,能夠執行全文搜索的功能以及禁用某些工作清單(例如取消選中文本框並不再返回全職工作​​)的功能。

使用Sphinx的開發人員希望將所有數據庫信息都存儲為帶密鑰的整數(因此在表“ Job Type”下可能會存儲值,例如1 =“ part-time”和2 =“ full-time” )...,而其他開發人員希望將數據庫保留為字符串(因此,在“作業類型”表下,它表示“兼職”或“全職”)。

是否有理由將數據庫保留為整數? 還是字符串應該沒問題?

謝謝!

助步車

選擇密鑰可能會對性能產生重大影響。 盡可能使用int代替字符串。 這被稱為“代理鍵”,其中該鍵提供了一種獨特而快速的方式來查找數據,而不是依靠數據本身。

字符串比較需要大量資源,比比較數字可能要差幾個數量級。

您可以將用戶界面從代理鍵上移開,但顯示另一列(例如job_type)。 這樣,當您訪問數據庫時,您將傳入int,並且避免瀏覽表以查找具有匹配字符串的行。

當涉及到數據庫中的連接表,他們會如果你有一個整型的或其他號碼作為主鍵的運行速度非常快。

編輯:在您提到的特定情況下,如果您對於字段可能只有兩個選擇,並且不太可能更改,則可能需要查看類似於位字段的內容,並且可以將其命名為IsFullTime。 bit或boolean字段保留1或0,沒有其他值,通常與另一個字段無關。

如果您正在規范化結構(希望如此),那么數字鍵將是最有效的。

除了通常使用整數主鍵的原因外,在Sphinx中使用整數也是必不可少的,因為成功的Sphinx搜索返回的結果集是與匹配項關聯的文檔ID列表。 然后使用這些ID從數據庫中提取相關數據。 Sphinx不會直接從數據庫返回行。

有關更多詳細信息,請參見Sphinx手冊 ,尤其是3.5。 對源數據的限制

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM