1. 程式人生 > >提高系統性能——對SQL語句優化的思考

提高系統性能——對SQL語句優化的思考

http art pos select 語句 聯合 data 過程 情況

軟件在研發的過程中自始至終都在留意著系統的可擴展性。但與此同一時候也在關註著系統的性能,SQL語句作為系統性能的一環不容忽視。從今天開始結合開發的經驗,談一下我對SQL語句優化的理解和認知:

1、在聯合查詢語句中做到小表驅動大表:

聯合查詢是經常使用到的一種查詢方式,左連接、右連接、內連接等等時不時地被應用在查詢語句中,然而在這一過程中假設能判明各表的數據量,那就再好只是了,在這樣的情況下from後面應該緊跟數據量小的表。為什麽?呵呵呵,比方a表有1000條數據,b表有20條數據。使用左連接進行聯合查詢假設a表驅動b表,那麽b表就要被訪問1000次,但假設b表驅動

a表,a僅僅要被訪問20次,其性能可想而知。

2、不要使用in+子查詢

請註意,我這裏並沒有說不要使用in查詢,假如in中的值是給定的。而不是通過select從其他表中查詢取得,那麽使用inkeyword也無可厚非,可是假如in中的數據是通過select從其他表中查詢取得的,強烈建議將其改為聯合查詢的方式,詳細方法請參看博客《SQL語句優化——in,not in,exists,not exists, left join...on》.

3、註意wherekeyword後面查詢條件的順序,將尚未給定值的查詢條件放到最後面。將給定的非模糊查詢條件放到最前面;

本博客持續更新中。敬請期待。

提高系統性能——對SQL語句優化的思考