如果我有下表。Ruby on Rails,ActiveRecord,二進制搜索
create_table :my_table, :id => false do |t|
t.string :key_column
t.string :value_column
end
我將如何確保各行通過的場均optimaly 存儲的二進制搜索:關鍵?
我如何確保使用二進制搜索?
如果我有下表。Ruby on Rails,ActiveRecord,二進制搜索
create_table :my_table, :id => false do |t|
t.string :key_column
t.string :value_column
end
我將如何確保各行通過的場均optimaly 存儲的二進制搜索:關鍵?
我如何確保使用二進制搜索?
對於任何有趣的行數,通過鍵訪問單個隨機記錄的最佳方式(對於大多數「最優」定義)是創建一個索引。
CREATE INDEX my_index ON my_table (key_column);
或一個ActiveRecord遷移:
add_index(:my_table, :key_column)
數據庫索引通常使用二進制搜索,使用B-trees或類似的,它提供了存儲成本和時間檢索和更新之間的良好平衡。
確保索引用於應該對單表操作相對簡單:
MyTable.find_by_key_column('ABC123')
例如,應該產生像這樣(檢查development.log):
SELECT * FROM my_table WHERE (key_column = 'ABC123')
甚至MySQL相對簡單的優化器應該沒有問題運行最佳。
行存儲不應該成爲單個行檢索的問題,這是幸運的,因爲無論如何你沒有多少可以控制它。對於MySQL性能,您應該選擇InnoDB上的MyISAM作爲存儲引擎,前提是您的「最優」定義不包括「最可靠」。
準確地存儲和檢索數據是數據庫的工作。你描述你想要的東西,它提供它。如果你想特別控制如何它會這樣做然後數據庫不是答案。