MySql在索引优化

1.复合索引
比如有一条语句是这样的:select * from users where area=’beijing’ and age=22;
如果我们是在area和age上分别创建单个索引的话,由于mysql查询每次只能使用一个索引,所以虽然这样已经相对不做索引时全表扫描提高了很多效
率,但是如果在area、age两列上创建复合索引的话将带来更高的效率。如果我们创建了(area, age,
salary)的复合索引,那么其实相当于创建了(area,age,salary)、(area,age)、(area)三个索引,这被称为最佳左前缀
特性。因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边,依次递减。

2.排序的索引问题
mysql查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。
select * from zl_yhjbqk order by qc_bh(建立qc_bh索引)
select * from zl_yhjbqk where qc_bh=’7001’ order by cb_sx(建立qc_bh+cb_sx索引,注:只是一个索引,其中包括qc_bh和cb_sx字段)

3.使用短索引
对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的 列,如果在前10 个或20 个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。

时间: 2024-08-28 11:45:30

MySql在索引优化的相关文章

mysql hash索引优化

创建表 CREATE TABLE `t1` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `msg` varchar(20) NOT NULL DEFAULT '',  `crcmsg` int(15) NOT NULL DEFAULT '0',  PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 //插入数据 insert into t1 (msg) values

mysql使用索引优化查询效率

索引的概念 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度.在没有索引的情况下,数据库会遍历全部数据后选择符合条件的:而有了相应的索引之后,数据库会直接在索引中查找符合条件的选项.如果我们把SQL语句换成"SELECT * FROM 表名 WHERE id=2000000",那么你是希望数据库按照顺序读取完200万行数据以后给你结果还是直接在索引中定位

mysql使用索引优化order排序

个人原创地址:http://www.phpthinking.com/archives/433 在数据库中我们一般都会对一些字段进行索引操作,这样可以提升数据的查询速度,同时提高数据库的性能像order by ,group by前都需要索引. 先我们要注意一下1>mysql一次查询只能使用一个索引.如果要对多个字段使用索引,建立复合索引.2>在ORDER BY操作中,MySQL只有在排序条件不是一个查询条件表达式的情况下才使用索引.关于索引一些说法 MySQL索引通常是被用于提高WHERE条件的

MySQL的索引优化,查询优化

MySQL逻辑架构 如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器.下图展示了MySQL的逻辑架构图. MySQL逻辑架构,来自:高性能MySQL MySQL逻辑架构整体分为三层,最上层为客户端层,并非MySQL所独有,诸如:连接处理.授权认证.安全等功能均在这一层处理. MySQL大多数核心服务均在中间这一层,包括查询解析.分析.优化.缓存.内置函数(比如:时间.数学.加密等函数).所有的跨存储引擎的功能也在这一层实现:存储过程.触发器.视图等.

MySQL之索引优化

很多数据库系统性能不理想是因为系统没有经过整体优化,存在大量性能低下的SQL 语句.这类SQL语句性能不好的首要原因是缺乏高效的索引.没有索引除了导致语句本身运行速度慢外,更是导致大量的磁盘读写操作,使得整个系统性能都受之影响而变差. 解决这类系统的首要办法是优化这些没有索引或索引不够好的SQL语句. 1.创建索引的关键优化SQL语句的关键是尽可能减少语句的logical reads.这里说的logical reads是指语句执行时需要访问的单位为8K的数据页总数.logical reads 越

mysql新版本索引优化简介

索引创建优化:fast index creationmysql5.5之前不包括5.5,创建索引或修改删除这类的ddl操作过程为:1.首先创建一张新的临时表,表结构为通过alter table 新定义的结构2.然后把原表中的数据导入到临时表中3.接着删除原表4.最后把临时表重命名为原来的表名 innodb 存储引擎从1.0.x开始支持fast index creation(快速索引创建)-简称:FIC对于辅助索引的创建,innodb存储引擎会对创建索引的表加上一个S锁,在创建过程中,不需要重建表,

MySQL添加索引优化SQL

在慢查询日志中有一条慢SQL,执行时间约为3秒 mysql> SELECT     -> t.total_meeting_num,     -> r.voip_user_num     -> FROM     -> (     -> SELECT     -> count(*) total_meeting_num     -> FROM     -> Conference     -> WHERE     -> isStart = 1   

MySQL高级-索引优化

索引失效 1. 2.最佳左前缀法则 4. 8. 使用覆盖索引解决这个问题.

【转载】MySQL索引优化

MySQL索引优化 原文链接 MySQL官方对索引的定义:索引是帮助MySQL高效获取数据的数据结构.索引是在存储引擎中实现的,所以每种存储引擎中的索引都不一样.如MYISAM和InnoDB存储引擎只支持BTree索引:MEMORY和HEAP储存引擎可以支持HASH和BTREE索引. 这里仅针对常用的InnoDB存储引擎所支持的BTree索引进行介绍: 一.索引类型 先创建一个新表,用于演示索引类型 CREATE TABLE index_table ( id BIGINT NOT NULL au