簡體   English   中英

Ruby on Rails,ActiveRecord,二進制搜索

[英]Ruby on Rails, ActiveRecord, Binary search

如果我有下表。

create_table :my_table, :id => false do |t|
   t.string :key_column
   t.string :value_column
end

我如何確保通過:key字段將行最佳存儲用於二進制搜索?

我如何確保使用二進制搜索?

對於任何有趣的行數,按鍵訪問單個隨機記錄的最佳方法(對於“最優”的大多數定義)是​​創建索引。

CREATE INDEX my_index ON my_table ( key_column );

或在ActiveRecord遷移中:

add_index(:my_table, :key_column)

數據庫索引通常使用B樹或類似方法進行二進制搜索,這在存儲成本與檢索和更新時間之間取得了良好的平衡。

對於單表操作,確保使用索引應該相對簡單:

MyTable.find_by_key_column('ABC123')

例如,應生成如下內容(請檢查development.log):

SELECT * FROM my_table WHERE (key_column = 'ABC123')

哪怕是MySQL相對不那么令人印象深刻的優化器,它也不會以最佳方式運行。

行存儲不應該是單個行檢索的問題,這是幸運的,因為無論如何您都無法控制它。 為了獲得MySQL性能,您應該選擇MyISAM而不是InnoDB作為存儲引擎,前提是您對“最佳”的定義不包括“最可靠”。

准確地存儲和檢索數據是數據庫的工作。 您描述您想要的東西,它交付了它。 如果你想控制它具體怎么去了解這樣做,然后數據庫就不是答案。

暫無
暫無

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

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