Home | 簡體中文 | 繁體中文 | 雜文 | Search | ITEYE 博客 | OSChina 博客 | Facebook | Linkedin | 作品與服務 | Email

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 請註明“讀者”

2016-03-29: 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

comments powered by Disqus