一般的查询加载

1.查询重写技术

   1 不要引用索引列在一个表达式。这样将阻止使用索引列。代替是应该在比较的边使用尽可能的。加入一个表t包含一个date  d列。 如下

select * from t where year>=1884代替使用select * from t where d>='1994-01-01';

  2.索引是特别有用的对于连接比较两个表中的列如下:

   select* from country,countrylanguage

  where country.code=countrylanguage.countrycode;

3.当使用索引是采用和列相同的数据类型

    where id=18

    where id='18'

4.在某种情况下,可以使用模式匹配,开始是字母时很有效

23.3.2 使用explain来获得优化信息

explain select* from t where year >=1994\G

explain select* from t where d>='1994-o1-01'\G可以看到减少了查询了行

22.3.3 优化查询通过限制输出

   limit限制输出

对于特别大的表如果要取出几行,使用limit并不能达到很好的效果。使用where很好


22.3.4 使用summary表

22.3.5 优化更新

  1.尽量使用where语句,在比较时使用索引

   2.explain被使用select查询,但是你可能发现它是有用分析update和delete语句。

   3.使用多行的插入代替多个单行的插入

如果你正在使用InnoDB表,你可以得到更好的性能通过分组他们在一个transaction而不是执行他们自动提交

   4.对于存储引擎,load data infile是更快比多行插入

    5.可以disable index,当加载元素进入一个空的myisam表时来加速操作。

     6.为了替代存在的行,使用replace而不是delete+insert

22.4 选择恰当的存储引擎

当创建一个表时,询问你自己那种类型的查询你正在使用。任何选择一个存储引擎。当需要处理查询和很多更新是使用INNoDB引擎。如果你正在使用MyISAM表,选择他们的结构来反映是否你考虑处理速度的效率或磁盘的使用率。不同的MYISAM存储跟上有不同的性能的特征。这影响你选择固定长度或可变长度的列来存储字符数据:

   1.使用固定的列入(CHAR,Binary)为了更好的加速

   2.使用可变长度的列入(varchar,varvinary text ,blob)为了更好使用磁盘空间。

另外使用MyISAM引擎的表被用来使用压缩的可读表。

对于INnodb,它是也是正确的使用Char列将花费更多的存储空间比varchar。但是没有额外的加速相比MyISAM,因为InnoDB引擎的实现存储对于char和varchar是相似的。

MeRGE表能够使用压缩和非压缩表的混合。这能偶使有用的对于基于时间纪录的。例如,你例如日志纪录,对于当前年的表可以使用非压缩的表,对于以前的日志使用压缩表。如果创建merge表来自collection,可以很容查询所有的表。

他将多个表在逻辑上当作一个表来查询。他建立后有两个文件,
.frm 表结构定义
.mrg union表的名字清单


两个基本表:
CREATE TABLE TEST_MERGE_1(
ID INT(5) NOT NULL,
VALUE VARCHAR(100) NOT NULL,
PRIMARY KEY(ID)
)
CREATE TABLE TEST_MERGE_2(
ID INT(5) NOT NULL,
VALUE VARCHAR(100) NOT NULL,
PRIMARY KEY(ID)



MERGE表的建立:
CREATE TABLE TEST_MERGE(
ID INT(5) NOT NULL,
VALUE VARCHAR(100) NOT NULL,
PRIMARY KEY(ID)
) TYPE=MERGE UNION=(TEST_MERGE_1,TEST_MERGE_2) INSERT_METHOD=LAST;
1. 此表类似于SQL中的union机制。
2. 此表结构必须与基本表完全一致,包括列名、顺序。UNION表必须同属一个DATABASE。
3. 基本表类型必须是MyISAM。
4. 可以通过修改.mrg文件来修改MERGE表,每个基本表的名字占一行。注意:修改后要通过FLUSH TABLES刷新表缓存。
5. 对基本表的更改可以直接反映在此表上。
6. INSERT_METHOD的取值可以是: 0 不允许插入 FIRST 插入到UNION中的第一个表 LAST 插入到UNION中的最后一个表。(4.0之后可用)
7. 定义在它上面的约束没有任何作用,约束是由基本表控制的,例如两个基本表中存在着同样的一个Key值,那么在MERGE表中会有两个一样的Key值。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值