如果开发人员在做表设计阶段没有考虑到大表历史数据的维护性,随着数据量越来越大,表就越来越难管理和维护.连创建索引的失败都可能会失败(因为创建索引要利用临时表空间的的排序,当临时表空间不够大创建索引的动作就会报错).如果过滤条件用不到索引,每成功完成一次delete操作就需要全表扫描一次...那么几十GB的大表,情何以堪...?
那么有什么方法可以解决这种问题吗?当然改造生产表是可以的(利用DBM...
分类:
其他好文 时间:
2015-02-20 09:45:55
阅读次数:
157
用户使用email作为用户名登陆的话,就需要查询出email对应的一条记录。每个用户的email是唯一的。SELECT * FROM t_user WHERE email=?;上面的语句实现了查询email对应的一条用户信息,但是由于email这一列没有加索引,会导致全表扫描,效率会很低。SELEC...
分类:
数据库 时间:
2015-02-16 19:33:58
阅读次数:
138
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在n....
分类:
数据库 时间:
2015-02-02 15:27:09
阅读次数:
150
周三去某在线旅游公司面试。被问到了一个关于数据量大的优化问题。问题是:一个主外键关联表,主表有一百万数据,外键关联表有一千万的数据,要求做一个连接。本人接触过单表数据量最大的就是将近两亿行历史数据(某运营商一业务一年数据)做查询,所有查询相关列必须做索引,而且还要保证不会出现全表扫描情况。也从来没有...
分类:
数据库 时间:
2015-02-01 10:49:31
阅读次数:
206
replace into为什么不好?先删除,后插曲,删除时会全表扫描吗?参考来自MySQL官方网络的文档:http://dev.mysql.com/doc/refman/5.0/en/replace.htmlMySQL uses the following algorithm forREPLACE(...
分类:
数据库 时间:
2015-01-26 13:24:20
阅读次数:
229
处理千万级以上的数据提高查询速度的方法:1.应尽量避免在 where 子句中使用!=或操作符,否则将引擎放弃使用索引而进行全表扫描。2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。3.应尽量避免在 where 子句中对字段进行 null 值...
分类:
其他好文 时间:
2015-01-20 15:04:36
阅读次数:
127
SQL Trainning 总结 1,Oracle 使用索引更快的遍历表,如果SQL不合理,就会造成优化器删去索引而使用全表扫描,这种SQL就是劣质SQL。
1.不要要Oracle 做的太多; 1)避免复杂的多表关联; 2)避免使用*; 3)避免使用好用资源的操作:Distinct、UNION、MI...
分类:
数据库 时间:
2015-01-19 20:41:46
阅读次数:
188
数据库索引1.什么是索引在数据库中,索引的含义与日常意义上的“索引”一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象。A)索引可以避免全表扫描。多数查询可以仅扫描少量索引页及数据页,而不是遍历所有数据页。B)对于非聚集索引,有些查询甚至可以不访问数据页。C)聚集索引...
分类:
数据库 时间:
2015-01-19 10:48:04
阅读次数:
240
和所有的秘笈一样,最后一招都会又回到起点,最后我们来讨论一下是否需要建立索引,也许进行全表扫描更快。
在大多数情况下,全表扫描可能会导致更多的物理磁盘输入输出,但是全表扫描有时又可能会因为高度并行化的存在而执行的更快。
如果查询的表完全没有顺序,那么一个要返回记录数小于10%的查询可能会读取表中大部分的数据块,这样使用索引会使查询效率提高很多。
但是如果表非常有顺序,那么如果查询的记录数大于...
分类:
数据库 时间:
2015-01-12 09:17:40
阅读次数:
178
1 避免无计划的全表扫描 如下情况进行全表扫描:- 该表无索引- 对返回的行无人和限制条件(无Where子句)- 对于索引主列(索引的第一列)无限制条件- 对索引主列的条件含在表达式中- 对索引主列的限制条件...
分类:
数据库 时间:
2015-01-10 23:35:46
阅读次数:
209