我有一个包含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列确实有索引。
如何提高此查询的性能?
发布于 2011-03-10 23:46:13
在进一步查看我的表格后,我发现了问题所在。我的索引创建不正确。我实际上在这个表中还有其他元数据(例如dateLastUpdated和已批准的布尔值)。当我执行类似"where dateLastUpdated =x和approved = true and dateCreated >= y“这样的搜索时,它将受益于字段上的三列索引。所以看起来我必须在这个表上创建一堆索引。希望我不会因为索引太多而影响插入性能。很抱歉打扰了大家。
https://stackoverflow.com/questions/5252936
复制相似问题