台灣最大程式設計社群網站
線上人數
751
 
會員總數:245608
討論主題:189311
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> SQL 語法 select statement 最佳化觀念
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
SQL 語法 select statement 最佳化觀念
價值 : 0 QP  點閱數:1189 回應數:0
樓主

站務人員 站長
門外漢
0 1580
542 9
發送站內信

捐贈 VP 給 站務人員
不管用的資料庫是那一種, 想要提昇查詢(就是 select)的速度, 最簡單的方式就是建立索引(create index), 而建立索引的對象當然就是那些常常拿來當作 select 條件的資料欄位.
比如前述的:
Select field_A From table Where filed_B > 100 Order By field_C
如果 field_B 常常放在 where 子句中, 那針對 field_B 建立索引可以加快查詢速度
但是請注意, 因為資料庫引擎需要維護索引資料, 所以如果索引建立的很詳細, 固然可以加快查詢速度, 但是新增或刪除資料列時, 就會比較慢囉! 因此新增索引時還是得評估一下整體效能哦

另外一種加速查詢的方式是把你的 select statement 最佳化, 我舉幾個簡單常用的最佳化概念:
1.作 table join 時, 把資料量小的 table 擺在 from 子句的前面
2.where 子句裡面儘量不要用到 or 運算子, 如
select * from tab1 where field1 = '1' or field1 = '2'
用 in 來代替, 變成
select * from tab1 where field1 in ('1','2')

select f1,f2 from tab1 where f1 = '1' or f2 = '1'
改用 union, 變成
select f1,f2 from table where f1='1'
union
select f1,f2 from table where f1='1'

3.如果 select 裡面會用到很多 table join, 考慮改用 nested select 或建立 view 來處理, 如:
select * from a,b,c where af1 = bf1 and bf2=cf1
改用 nested select, 成為
select * from a,(select bf1 from b,c where bf2=cf1) as view_bc
where af1 = view_bc.bf1

本篇文章發表於2002-04-11 00:00
目前尚無任何回覆
   

回覆
如要回應,請先登入.