程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql聯合索引的應用

mysql聯合索引的應用

編輯:MySQL綜合教程

mysql聯合索引的應用   有一個log表,結構是這樣的:  

CREATE TABLE `weblog` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `ip` varchar(45) NOT NULL,
  `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `kind` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=48024 DEFAULT CHARSET=utf8;

 

  記錄共有11萬條   1、
select count(times1) as times from (SELECT count(id) as times1 FROM weblog group by ip,kind) as a

 

  當執行這個查詢時,需耗時1.9秒,有些受不了,後來發現這樣這樣添加個一個聯合索引  
alter table weblog add INDEX `sindex` (`ip`,`kind`)
後,,該查詢就會減少到0.182秒   優化是非常明顯的   但是如果
alter table weblog add INDEX `sindex` (`ip`,`kind`,'id')
後,查詢反倒會變慢   2、
select count(times1) as times from (SELECT count(id) as times1 FROM weblog group by kind) as a

 

  當未進行聯合查詢優化時,需要時間我1.8025秒  
alter table weblog add INDEX `sindex` (`kind`,`id`)進行聯合索引後

 

  這個時間變為0.143秒   優化也是非常明顯   如果有類似的group by的 如果進行聯合索引,合適的話,應該能提高很高的效能

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved