SQL 优化

Mr. Neo Chen (陈景峯), netkiller, BG7NYT


中国广东省深圳市龙华新区民治街道溪山美地
518131
+86 13113668890


$Id: sql.xml 616 2013-06-14 05:10:30Z netkiller

版权声明

转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。

文档出处:
http://netkiller.github.io
http://netkiller.sourceforge.net

微信扫描二维码进入 Netkiller 微信订阅号

QQ群:128659835 请注明“读者”

2017-06-16: 2013-06-14 13:10:30 +0800 (Fri, 14 Jun 2013)

摘要

目录

1. 日期型字段做索引

日期型字段做索引最长遇到的问题就是时间重复,导致返回结果非预期数量

实验环境:MySQL, create_time是unixtime风格的日期型字段ctime TIMESTAMP型的字段。

首先未ctime创建索引

		
CREATE TABLE `members_tmp` (
	`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
	`member_id` INT(11) NOT NULL,
	`user_id` INT(11) NOT NULL DEFAULT '0',
	`fields` TEXT NOT NULL,
	`create_time` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`ctime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
	PRIMARY KEY (`id`),
	INDEX `user_id` (`user_id`),
	INDEX `member_id` (`member_id`),
	INDEX `ctime` (`ctime`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=40168;
		
		
		
select count(id) as c from  members_tmp  where ctime > '2011-';
或
select count(id) as c from  members_tmp  where ctime like '201%';
		
		

删除索引 INDEX `ctime` (`ctime`) 再次查看你会发现结果有所变化

查看重复记录

		
explain select * from (select *,count(id) as c from  members_tmp  where ctime like '2012-%' group by ctime) as tmp order by c desc;
		
		

2. 常用网络软件服务安装

2.1. net-snmp

用于服务器的状态监控

			

			
			

3. php-5.4.9

由于redhat与centosYUM源中尚未提供php-fpm所以我采用编译安装,网上有一些爱好者制作过php-fpm的rpm包。是否使用你自己那注意。

3.1. 配置php.ini

备份配置文件,防止不小心改错而又找不出问题出在哪里。

3.2. PHP Extension - APC

Apc