一个键盘码代码,两只黄鹂名翠柳

MySQL索引优化(一)

主键优化主键可以是表的一个列或者是多个列,有一个关联的索引。利用主键查询是非常快的。主键查询对于not null的优化是非常棒的,因为主键不允许有null值。在InnoDB存储引擎中,一张表的数据基于主键存储。如果你的表非常大而且特重要,但却没有一个有明显特征的列或者列的集合作为主键。你需要单独创建一个自增列(auto-increment )作为主键。那些唯一键可以作为join表时的外键使用。外键优化如果一张表有一些字段,你常用来组合查询一些数据,这时候应该将那些低频的字段单独得地拆分为一张表,并在主表中使用外键与之关联。这样,每张小表会拥有自己的主键,可以快速的查询它自己的数据,也可以通过join操作来查询其他需要的字段。查询的IO和耗费的内存,最终取决于数据是如何分布的,因为在磁盘中相关的字段是被打包在一起存储的。通常情况下,查询是尽可 查看全文

MySQL索引优化(二)—— B树索引和hash索引的对比

B-Tree索引的特征B-Tree索引可以使用比较表达式,包括 =, >, >=, <, <=,  BETWEEN等表达式,还可以使用 like表达式(1、不能以 % 等通配符开始,2、而且必须是常量字符串)。 下面的两条sql会使用索引SELECT * FROM tbl_name WHERE key_col LIKE 'Patrick%'; SELECT * FROM tbl_name WHERE key_col LIKE 'Pat%_ck%';下列的sql不会使用索引-- 以 查看全文

MySQL索引优化(三)—— 索引的合并

索引合并查询是指将多个范围扫描合查询的结果合并为一个结果集。索引合并这种访问方式适用于单表查询,不适用与多表查询。在查询的时候会产生并集、交集或者是交并集的操作。索引合并查询的例子SELECT * FROM tbl_name WHERE key1 = 10 OR key2 = 20; SELECT * FROM tbl_name   WHERE (key1 = 10 OR key2 = 20) AND non_key = 30; SELECT * FROM  查看全文

MySQL索引优化(四)—— 范围查询优化

范围查询可以通过一个索引的单个或者多个索引值的区间来检索数据记录,也适用于符合索引。下面就区间是怎么样从where子句中被提取出来的作出详细解释。使用单值索引的范围查询对于单值索引来说索引值的区间能够很好地通过where子句中的相应条件很好的表示出来。单值索引的范围查询被定义为:对于BTree索引和Hash索引来讲,包含索引键和 =, <=>, IN(), IS NULL 或者 IS NOT NULL 这些操作符的比较此外对于BTree索引来讲还包含索引键和 >, <, >=, <=, BETWEEN, !=, 或<>, 或 LIKE不以通配符开头的 这些操作符的比较对于所有的索引类型,多个索引条件用 or 或者 and 组合的单个范围查询下面这些是范围查询SELECT * FROM 查看全文

MySQL索引优化(五)—— WHERE语句优化

平常我们可能会牺牲可读性来使计算变得更快而重写SQL。其实MySQL会做类似的优化操作,我们大可以避免这个工作,尽量在写SQL的时候更关注可维护性和可读性。MySQL通常会做对WHERE语句做下述的优化:1、移除不必要的括号   ((a AND b) AND c OR (((a AND b) AND (c AND d)))) -> (a AND b AND c) OR (a AND b AND c AND d)2、常量合并(a<b AND b= 查看全文
加载更多
php ( 6 )
index ( 5 )
https ( 3 )
ssl ( 3 )
awk ( 3 )
http ( 3 )
hql ( 3 )
字体 ( 3 )
php:// ( 2 )
测试 ( 2 )
gd ( 1 )
nginx ( 1 )
protobuf ( 1 )
freetype ( 1 )