我有一個有很多字段的InnoDB表,其中一個是32字節(典型的md5結果)的唯一散列。在MySQL中通過散列優化搜索
我必須做很多查詢通過散列搜索的,但我的表開始要大(500.000記錄),而這個搜索需要大量的時間:
SELECT id FROM `table` WHERE `key`='Bj8DzS7RmCG41nLdgOp0kEhNtrfPo3KF'
這花了大約0.7秒
我可以創建這個「散列」32字節varchar列的索引,但是這個表增長很多,如果我必須優化表(重新索引),它需要很多時間來做到這一點(在我的情況下大約10分鐘),鎖定所有其他實時查詢。
那麼,什麼是最好的方法來優化查詢,你必須通過一個32字節的varchar字段進行搜索?
我不明白你爲什麼重新編制索引。問題似乎在這裏,索引該欄是唯一合理的答案。 –
因爲每個重新索引需要大約10分鐘!每天大約有10,000個新的行......所以每天重新編制索引(例如凌晨3點)會很好......但我不想在重新索引時將表鎖定10分鐘。 – user2830719