我试图优化相对较大的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