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必須有一個不是?
總結
以上是生活随笔為你收集整理的firebird优化笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何查看Androidstudio中ac
- 下一篇: Android MP3录音功能(能暂停,