首页 > 代码库 > MYSQL优化
MYSQL优化
伪哈希技巧
使用一个函数 crc32($string),能把一个字符串转化为32位整数。
$checksum = crc32("The quick brown fox jumped over the lazy dog."); printf("%u\n", $checksum); //2191738434
把整形数据保存到数据中肯定比直接保存字符串要快得多。
多列索引时要考虑因数
查询频率
列区分度
列查询顺序
索引与排序关系
排序可能发生的两种情况
- 对索引覆盖,直接在索引查询时就是有序得。在Innodb引擎中,沿着引擎字段排序,自然是有序得。对于Myisam引擎,如果按索引字段排序,如ID,但取出来字段中,有未索引字段,如dede_name,Myisam做法并不是先在索引树上找,在回行,而是先取出所有的行再进行排序。
先建两张表仅是引擎不同
create table test_index( id int primary key auto_increment, name char(10) not null default ``, email char(10) not null default ``, index c (`id`,`name`) ) engine = Innodb charset utf8; create table test_order( id int primary key auto_increment, name char(10) not null default ‘‘, email char(10) not null default ‘‘, index c (`id`,`name`) ) engine = myisam charset utf8;
explain select id , email from test_index order by id\G
explain select * from test_order order by id\G
在实际的开发中是要避免产生filesort文件排序,怎么优化?
建立联合索引
使用Innodb引擎
- 先取出数据,形成临时表,做filesort文件排序(排序时文件可能在磁盘中,也有可能在内存中)。
重复索引与冗余索引
重复索引:在同一开裂或者顺序相同的几个列建立多个索引。eg:index c1(id ,name .email), index c2(id ,name)
冗余索引:多个所以所覆盖的列有重叠,二顺序不同。eg:index c1tag1,tag2) ,index c2(tag2,tag1)
重复索引并不会提高查询的效率,这是没有必要的。而冗余索引是可以提高查询的效率,在一定的情况是可提倡。由此可见 索引的顺序是有必要注意得。
MYSQL优化
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。