数据库结构图
存储引擎层
索引
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