小编pla*_*men的帖子

如何在where子句中优化mysql date_format()的速度?

我正在尝试优化具有220,000行的相对较大的mysql(myisam)表。桌子本身不是很大-大约23.5MB。那么,真正的问题是什么?-我得到这样的查询:

SELECT * FROM table WHERE DATE_FORMAT(date_field, '%m%d') = '1128' LIMIT 10
Run Code Online (Sandbox Code Playgroud)

我试图在date_field上设置一个索引,但EXPLAIN显示该索引根本没有使用...我猜这并不奇怪,因为DATE_FORMAT()。因此,我计划添加另一列,将日期保留为'%m%d'并在其上放置一个索引。我不想这样做的唯一原因是因为数据重复。
顺便说一句,我使用date_field是生日日期字段,并且我确定我总是需要date_field为%Y-%m-%d或只是%m%d

您是否对上面的查询如何优化有更好的建议?提前致谢 !!!

一些信息:

MySQL版本:5.0.51b-log
操作系统:slackware 12.1
CPU:Pentium III(Coppermine)at 996.783Mhz
RAM:512MB DDR
HDD:80GB SATA

PS我试图添加另一列,将日期保存为%m%d。结果非常好,但我仍然不喜欢这种方法。我正在等待更多建议!

mysql optimization date-format

5
推荐指数
1
解决办法
2865
查看次数

来自cronjob的PHP ob_*?

ob_*当它作为cronjob运行时,我遇到了一些函数问题:

<?php
function getLayout($file, $extract=array()) {

    if (is_file($file)) {

        if (count($extract) > 0) {
            extract($extract);
        }

        ob_start();
        include $file;
        $contents = ob_get_contents();
        ob_end_clean();

        return $contents;
    }

    return false;
}

file_put_contents('somecachefile.html', getLayout('somefile.php', array('var1'=>$val1, 'var2'=>$val2)));
?> 
Run Code Online (Sandbox Code Playgroud)

cronjob设置如下:(每分钟运行)

* * * * * /usr/bin/php /path/to/cron.php > /dev/null
Run Code Online (Sandbox Code Playgroud)

在这种情况下,没有任何事情发生,但cron真的跑了.

如果我/usr/bin/php /path/to/cron.php从命令行调用this(),一切都按预期工作.

我犯了什么错误的想法?

感谢您的帮助!

php cron crontab

0
推荐指数
1
解决办法
369
查看次数

MySQL查询需要优化

我收到了这个问题:

SELECT user_id  
FROM basic_info  
WHERE age BETWEEN 18 AND 22 AND gender = 0  
ORDER BY rating  
LIMIT 50  
Run Code Online (Sandbox Code Playgroud)

该表看起来像(它包含大约700k行):

CREATE TABLE IF NOT EXISTS `basic_info` (  
  `user_id` mediumint(8) unsigned NOT NULL auto_increment,  
  `gender` tinyint(1) unsigned NOT NULL default '0',  
  `age` tinyint(2) unsigned NOT NULL default '0',  
  `rating` smallint(5) unsigned NOT NULL default '0',  
  PRIMARY KEY  (`user_id`),  
  KEY `tmp` (`gender`,`rating`),  
) ENGINE=MyISAM;  
Run Code Online (Sandbox Code Playgroud)

查询本身已经过优化,但它必须走大约20万行来完成他的工作.这是解释输出:

id  select_type     table   type    possible_keys   key     key_len     ref     rows    Extra  
1   SIMPLE  basic_info  ref     tmp,age     tmp …
Run Code Online (Sandbox Code Playgroud)

mysql optimization

0
推荐指数
1
解决办法
175
查看次数

标签 统计

mysql ×2

optimization ×2

cron ×1

crontab ×1

date-format ×1

php ×1