我有一箇中等大小的記錄集合 - 大約2000萬 - 我需要加載到mySQL以用於數據分析。這些恰好是訪問地點的人的記錄。他們是唯一由三個數據項標識: - 一個獨特的INT 設計mySql索引和提高效率的主鍵
- 地方的字符串,有時候數字和字母有時如AB12345678
- 訪問-similar以人
我對這個人和訪問領域的內容沒有任何控制權,因爲這些是由不同的地方提供的,而且每個地方都有自己的事情。
我可以找到一個人的所有記錄,通過匹配所有三個人匹配地點和人,以及一個單獨的記錄。
我可以通過創建這樣一個表格讓在MySQL這項工作很好:
CREATE TABLE ENCOUNTER (
PLACE int(11) NOT NULL,
PERSON varchar(255) NOT NULL,
VISIT varchar(255) NOT NULL,
ARRIVAL_TIME datetime DEFAULT NULL,
DEPARTURE_TIME datetime DEFAULT NULL,
EVENT varchar(255) NOT NULL,
PRIMARY KEY (PLACE,PERSON,VISIT)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;
我的MyISAM去,因爲我不需要在此表中ACID事務的完整性;它用於統計報告,所以如果它是一行或兩行陳舊,這是沒有問題的。
該表通常會遇到只更改其中一個字段的UPDATE,如DEPARTURE_TIME。這些UPDATE很可能是新行INSERT的兩倍。不需要更新地點,人員或訪問標識符。
這裏的一些問題:
我會過得更好的性能明智的一個索引和鍵列串聯的地方/人/參觀信息?
我爲varchar索引獲得了多少點擊?是否值得將它們限制在一個固定長度的字段?
從收集的智慧的任何其他建議?
謝謝。
謝謝。實際上,大部分分析可能基於我的模式中的一個時間戳。麻煩的是,它們可以在行被創建後進行更改。但是分區是一個非常好的主意。 – 2009-11-27 17:42:01