2011-03-09 28 views
0

我有一個表與MySQL 4和表有這樣一個模式:從微軟Word性能不佳查詢8 GB表大列和多行

itemId int 
essay longtext 
dateCreated timestamp 
creatorId int 

大多數論文是非常大的膏(想想幾兆字節的散文)。我是 試圖查詢此表以僅確定誰在特定的時間範圍內提交了論文。我在這個查詢的第一種方法是:

select creatorId from stories where dateCreated >= '2011-03-09 11:00:00'; 

這應該只返回約10-20結果。不幸的是,查詢需要10多分鐘才能完成(因爲整個表的大小是8 GB和100,000行)。 dateCreated列確實有一個索引。

如何提高此查詢的性能?

+2

8 GB和100,000行不是很大,不需要10分鐘(您不是選擇重柱或設置條件)。你可以運行'SHOW CREATE TABLE故事;'併發布結果?看起來索引有問題...運行'EXPLAIN SELECT ...'也是有用的。 – Galz 2011-03-09 23:19:07

+0

'dateCreated'是否允許NULL? – 2011-03-09 23:24:24

+0

您是在本地桌面驅動器上還是在服務器上運行磁盤陣列? – 2011-03-10 00:12:30

回答

0

看過我的表格後,我發現了這個問題。我的索引創建不正確。我在這個表中實際上有其他元數據(如dateLastUpdated和批准的布爾值)。當我做一個像「where dateLastUpdated = x且approved = true且dateCreated> = y」的搜索時,它將受益於字段上的三列索引。所以看起來我必須在這個表上創建一堆索引。希望我不會因爲索引太多而損害插入性能。抱歉打擾每個人。