【发布时间】:2011-04-13 00:11:28
【问题描述】:
我就是这样的:
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,因为有时它可能是字母数字。
id 是主键。
所以.. 事情是这样的,我有超过 100 万条记录。但是,有一个查询可以检查指定源上是否存在重复的 transaciton_id。所以,这是我的查询:
SELECT *
FROM UserTrans
WHERE transaction_id = '212398043'
AND source = 'COMPANY_A';
这个查询变得非常慢,现在要运行 2 秒。我应该索引 transaction_id 和源吗?
例如键join_id (transaction_id, source)
如果我这样做有什么缺点?
【问题讨论】: