firebird优化笔记



firebird sql语句优化


建立索引的优点: 
  1)大大加快数据的检索速度,提高数据库执行效率。 
  2)创建唯一性索引,保证数据库表中每一行数据的唯一性; 
  3)在表与表之间建立关联字段索引,加速表和表之间数据访问连接速度; 
  4)对频繁进行GROUPBY(分组)或ORDERBY(排序)操作的表结构字段建立索引。 


优化查询速度上,应尽量避开使用视图




SQL语句优化等价变换 


1)尽量避免使用<>、or、is not null、in、not in、like等这样的操作符。 


    这些操作符会使系统无法使用索引,而只能直接搜索全表中的数据,大大影响执行效率。
例如:select ph from jh_ph Where ph like ‘%37200%’如果使用该前后包含SQL语句,
将对表中25万条记录逐个比对分析,效率极低,运行时间大概5s,而如果在数据表中添
加一个数字品种字段phsz,预先分离数字信息,换成如下方式查询,则效果会非常好:
select ph from jh_ph where phsz=‘37200’,执行时间大概30ms左右,大大提高了运行速度。 


2)尽量避免在Where子句中对字段进行函数或表达式操作。 
  Select ph from jh_ph here substring(ph from 1 for 4)=‘ABCD’ 
  等价于:Select ph from jh_ph where ph like ‘ABCD%’执行效率要高于上一表达式。


3)数据查询读取中exists和union执行效率的比对:(嵌套的越多,执行越慢,越简单越好)
    



参考:http://www.xzbu.com/8/view-7443820.htm




CREATE global temporary TABLE tbl1 ( 
  ID         INTEGER NOT NULL, 
  NAME       VARCHAR(32) 
) ON COMMIT PRESERVE ROWS

临时表分事务级临时表和会话级临时表。 
事务级临时表只对当前事务有效,通过语句:ON COMMIT DELETE ROWS 指定。 
会话级临时表对当前会话有效,通过语句:ON COMMIT PRESERVE ROWS语句指定。 


SELECT a.ID, (case definetype when 1 then 0 else 1 end) as type 
FROM mybook a
实时 set case中的变量行不(可以)
SELECT first 10 ID, definetype, (case definetype when ? then 0 else 1 end) as type FROM myBOOK
then 与 else必须有一个不是?


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值