高性能mysql

目录
  1. 数据库结构图
  2. 索引
    1. 为排序使用索引扫描
  3. 查询优化

数据库结构图

存储引擎层

索引

B-Tree索引
hash索引
innodDB中的自适应hash索引
使用where语句手动定义hash函数,增加查找速度,例子如url查找

select id from url where url=”www.mysqlcom” and url_crc=CRC32(“http://www.mysql.com“);

这种方法的一个缺点就是要维护哈希值,可以使用触发器进行维护:
create table pseudohash(
id int unsigned NOT NULL auto_increment,
url varchar(255) NOT NULL,
url_crc int unsigned NO NULL DEFAULT 0,
primary key(id)
);

创建触发器:

可以使用的伪hash函数如下:
CRC32 right(MD5(),n) left(MD5(), n)
像md5,sha1之类的函数返回的值太长,可以取其结果的部分值进行说明

sql 分隔符,delimiter关键字?

为排序使用索引扫描

按照索引对结果进行排序,只有当索引的顺序和order by子句中的顺序完全一致,并且所有列的方向(升序或降序)一样才可以。如果查询联接了多个表,只有在order by子句的所有列引用的是第一个表才可以。查找查询中的order by子句也有同样的局限:它要使用索引的最左前缀,在其他所有情况下,mysql使用文件排序。

查询优化

group by:如果运行了很多很长的聚合查询以生成汇总,那么磁盘使用会因支持group by查询的覆盖索引而得益。
的使用

to be continue

本站总访问量