我有一个MySQL 4表,表格有这样的架构:
itemId int
essay longtext
dateCreated timestamp
creatorId int
这些文章中的大多数是来自MS Word的非常大的粘贴(想想多兆字节的文章)。我 试图查询该表只是为了确定谁在特定时间范围内提交了一篇论文。我在这个问题上的第一个方法是:
select creatorId from stories where dateCreated >= '2011-03-09 11:00:00';
这应该只返回大约10-20个结果。不幸的是,查询花了10多分钟才完成(因为整个表大小为8 GB,100,000行)。 dateCreated列确实有一个索引。
如何改善此查询的效果?
答案 0 :(得分:0)
在看了我的桌子之后,我发现了问题。我的索引创建错误。我实际上在这个表中有其他元数据(例如dateLastUpdated和approved boolean)。当我进行搜索时,例如“where dateLastUpdated = x and approved = true and dateCreated> = y”,它将受益于字段上的三列索引。所以看起来我必须在这个表上创建一堆索引。希望我没有因为索引太多而损害插入性能。对不起打扰每个人。