狼人
          走在SCJP的路上
          posts - 12,  comments - 14,  trackbacks - 0
          摘自:http://www.cnblogs.com/ivan-yan/archive/2009/05/30/1492042.html
          作者:Ivan-Yan



          最近在寫Sql語句時,碰到兩個問題:
                1)ORA-01795: maximum number of expressions in a list is 1000      
                起因:寫出了這樣的sql語句:SELECT PALLET_ID,BOX_ID,STATUS FROM SD_CURRENT_BOX WHERE PALLET_ID IN('"+pallets+"');其中的pallets是有很多個pallet_id組合成的字符串。
                分析:很顯然,根據錯誤提示可以知道:in 中items的限制 1000個。
                解決:用子查詢來代替pallets長字串。

                2)ORA-01704: string literal too long
                起因:寫出了這樣的Sql語句:UPDATE PDM_MEMBERLIST SET MEMBERS='<Project> ...  此處略去n多串 <ProjectID>'.
                分析:數據庫設計MEMBERS字段為xmltype格式,數據存儲時候,是以字符串的形式存儲。這樣在xml數據量大的時候,造成sql語句過長,嘗過2k的限制。
                解決:參數化sql語句。


          -----------------------------------------------------------------------------------------------------------------------

          #1樓   回復  引用  查看    

          ORA-01795:用IN的SQL效率比較低,如果是確定的數據,比如“IN(‘value1’,'value2'……)”,用OR連接更好些,雖然看著比較長,但是效率比較高。如果用子查詢,IN的效率也不如Exists。

          Ivan-Yan

          posted on 2009-08-03 16:48 狼人 閱讀(3015) 評論(0)  編輯  收藏 所屬分類: Oracle

          <2009年8月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 扎赉特旗| 通山县| 临城县| 海宁市| 额敏县| 凤凰县| 炉霍县| 华亭县| 光泽县| 南郑县| 柳林县| 天镇县| 霍城县| 禄丰县| 壤塘县| 冷水江市| 鹤山市| 万年县| 平乡县| 从化市| 扬州市| 边坝县| 万源市| 沙河市| 桃江县| 新乐市| 当阳市| 滨海县| 德阳市| 昌江| 宣恩县| 普格县| 大厂| 鸡西市| 江西省| 商水县| 武陟县| 阿拉尔市| 青铜峡市| 互助| 桑日县|