SQL優化關於or與in使用

2021-08-19 00:18:16 字數 288 閱讀 4763

網上有很多人都在談論or與in的使用,有的說二者沒有什麼區別,其實不然,估計是測試做的不夠,其實or的效率為o(n),而in的效率為o(log2n),當基數越大時,in的效率就能凸顯出來了。

有人做了這麼一組實驗(測試庫資料為1000萬條記錄):a組分別用or與in查詢3條記錄,b組分別用or與in查詢120條記錄,c組分別用or與in查詢500條記錄,d組分別用or與in查詢1000條記錄.

結論:in和or的效率,取決目標條件列是否有索引或者是否是主鍵,如果有索引或者主鍵效能沒啥差別,如果沒有索引,in的效能要遠遠優於or.

關於SQL優化的總結

最近面試中問到了資料庫sql優化的問題,答得不是很好,故總結一下。主要針對資料庫索引來展開。用索引提高效率 索引是表的乙個概念部分,用來提高檢索資料的效率,oracle使用了乙個複雜的自平衡b tree結構.通常,通過索引查詢資料比全表掃瞄要快.當oracle找出執行查詢和update語句的最佳路徑...

sql優化 使用索引

專案中使用了大量的sql,對於查詢sql,如果沒有使用索引會對查詢速度造成很大的影響,例如如下sql select a.name,b.id from tablea a join tableb b on a.id b.other id where a.name test and b.pin 123 a...

HQL與SQL關於DATEDIFF的使用工作備份

1.select o.id from insuranceorder as o where select datediff o.expiredate,o.buydate 1460 and select datediff o.expiredate,o.buydate 1095 2.select v.id...