0
我有一個非常大的圖像數據庫,我需要運行更新來增加圖像的查看計數。每個小時都有超過一百萬個獨特的行需要更新。現在運行這個查詢需要大約一個小時,無論如何要讓這個運行速度更快?MySQL查詢優化大表
我創建一個內存表:
insert low_priority into tmp_views_table
values ('key', 'count'),('key', 'count'),('key', 'count'), etc...
:
CREATE TABLE IF NOT EXISTS tmp_views_table (
key VARCHAR(7) NOT NULL,
views INT NOT NULL,
primary key (`key`)
) ENGINE = MEMORY
然後我使用運行,直到所有的意見已插入存儲表中的循環插入在同一時間觀看1000次
然後我運行的實際表的更新是這樣的:
update images, tmp_views_table
set images.views = images.views+tmp_views_table.views
where images.key = tmp_views_table.key
這最後一次更新是一個是TA國王一個小時左右,內存表的東西運行得非常快。
有沒有更快的方法,我可以做這個更新?
數字ID比varchar更有意義。另外,你的表格是否被索引? – 2012-01-05 18:37:56
我不確定內存表的索引在哪裏保存,但是它們不會減慢這些插入/更新操作,特別是在** MEMORY **引擎的情況下? – Rolice 2012-01-05 18:58:20
@OliCharlesworth id是一個散列,所以它包含字母和數字,是的主鍵是關鍵或散列 – Brian 2012-01-05 18:58:49