我有這樣的talbe:MySQL:索引額外字段有什麼缺點?
CREATE TABLE UserTrans (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` int(10) unsigned NOT NULL,
`transaction_id` varchar(255) NOT NULL default '0',
`source` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`)
)
與InnoDB引擎。
transaction_id是var,因爲它有時可以是aphanumeric。
該id是主鍵。
so ..這是事情,我有超過1M的記錄。但是,有一個查詢在指定的源上檢查重複的transaciton_id。所以,這是我的查詢:
SELECT *
FROM UserTrans
WHERE transaction_id = '212398043'
AND source = 'COMPANY_A';
這個查詢變得非常慢,就像現在運行2秒。我應該索引transaction_id和源?
例如KEY join_id
(transaction_id
,source
)
如果我這樣做有什麼缺點?
+1有關前綴索引的好主意... – 2010-09-16 02:50:35
@Bill ...我認爲OP也可以考慮在transaction_id上單獨使用索引(或前綴索引),以節省空間......特別是如果'transaction_id'幾乎是唯一的。你會怎麼看? – 2010-09-16 02:56:20
交易ID並不是唯一的。它在源頭上是獨一無二的。 :)另外,我其實不會做SELECT *,intead,我只是返回記錄ID。 :) – murvinlai 2010-09-16 03:02:38