我試圖優化相對較大的MySQL(myisam)表220,000行。桌子本身並不大 - 大小約爲23.5MB。那麼,真正的問題是什麼? - 我有這樣的查詢:如何在where子句中優化mysql date_format()以提高速度?
SELECT * FROM table WHERE DATE_FORMAT(date_field, '%m%d') = '1128' LIMIT 10
我試圖設置DATE_FIELD的指數,而是要解釋表明,該指數不使用在所有...我想這是因爲DATE_FORMAT不那麼陌生()。所以,我打算添加另一列,將日期保存爲'%m%d'並在其上放置索引。我不想做這件事的唯一原因是因爲數據重複。
順便說一句我用DATE_FIELD是一個出生日期字段,我敢肯定,我總是需要DATE_FIELD爲%Y-%間%d或剛剛%M%d
你對如何優化查詢更好的建議以上 ?提前致謝 !!!
一些信息:
MySQL的版本:在996.783Mhz
RAM奔騰III(Coppermine的):512MB DDR
硬盤:80GB SATA
OS:Slackware的12.1
CPU
PS我試圖添加保存日期爲%米%d另一列。結果非常好,但我仍然不喜歡這種方法。我在等待更多建議!
感謝您的建議號!我不認爲這對我的情況非常有用(我插入了一些筆記),但總的來說這是一個很好的方向! – plamen 2009-08-19 19:10:49
對未來也有好處。如果您需要過濾所有星期四,則只需向time_dimension添加另一列,然後使用where t.dayname ='Thursday'。或在一個月內所有周末將成爲其中t.year = 2009和t.month = 9,t.weekend_flag = 1 :-) – nos 2009-08-19 19:15:09
與出生日期打交道時,除非該數據庫向嬰兒面向並不能真正幫助。 – jmucchiello 2009-08-19 19:22:00