Hi,
I have used TKPROF to examine my slow SQL and it's pointed out it is because of the hard parsing process. Bind variables would not help in my case because the query conditions vary quite arbitrarily depending on what the user selects on the application GUI.
I've managed to break the query into smaller ones using UNION ALL and the parsing takes much shorter. However I'm still wondering if, in general, there could be anything one could do to speed up the hard parsing process, or it is something totally internal in Oracle and there's nothing we can do about it?
A small example of the slow query (execute 0.00s, fetch 0.04s, and parse 66.51s), nr is the primary key.
SELECT n.nr,n.x,n.y,n.z
FROM
data2points n WHERE((n.nr>2595 AND n.nr<2600) OR n.nr=2601 OR (n.nr>2602 AND
n.nr<2608) OR n.nr=2617 OR n.nr=2623 OR (n.nr>2634 AND n.nr<2637) OR
(n.nr>6457 AND n.nr<6461) OR n.nr=6462 OR n.nr=6468 OR n.nr=6480 OR
(n.nr>20677 AND n.nr<20680) OR n.nr=20681 OR n.nr=20683 OR n.nr=26404 OR
n.nr=26406 OR (n.nr>26408 AND n.nr<26411) OR n.nr=26422 OR (n.nr>26423 AND
n.nr<26426) OR (n.nr>26426 AND n.nr<26431) OR (n.nr>26432 AND n.nr<26435)
OR n.nr=26441 OR n.nr=26443 OR (n.nr>26471 AND n.nr<26474) OR (n.nr>26474
AND n.nr<26478) OR (n.nr>26481 AND n.nr<26486) OR (n.nr>26487 AND
n.nr<26492) OR n.nr=26498 OR (n.nr>26504 AND n.nr<26507) OR (n.nr>26513 AND
n.nr<26516) OR (n.nr>26516 AND n.nr<26520) OR n.nr=26522 OR (n.nr>26523 AND
n.nr<26527) OR (n.nr>26527 AND n.nr<26530) OR (n.nr>26530 AND n.nr<26533)
OR n.nr=26538 OR n.nr=26562 OR (n.nr>26566 AND n.nr<26570) OR (n.nr>26570
AND n.nr<26575) OR n.nr=26580 OR n.nr=26603 OR (n.nr>26607 AND n.nr<26610)
OR (n.nr>26610 AND n.nr<26614) OR (n.nr>26618 AND n.nr<26621) OR n.nr=26624
OR n.nr=26627 OR (n.nr>26629 AND n.nr<26632) OR n.nr=26634 OR (n.nr>26635
AND n.nr<26638) OR n.nr=26639 OR n.nr=26642 OR n.nr=26648 OR (n.nr>26650
AND n.nr<26662) OR n.nr=26663 OR (n.nr>26664 AND n.nr<26668) OR (n.nr>26695
AND n.nr<26698) OR (n.nr>26699 AND n.nr<26707) OR n.nr=26708 OR n.nr=26710
OR (n.nr>26714 AND n.nr<26729) OR n.nr=26751 OR (n.nr>26752 AND n.nr<26755)
OR n.nr=26757 OR (n.nr>26759 AND n.nr<26762) OR (n.nr>26762 AND n.nr<26766)
OR n.nr=26767 OR (n.nr>26773 AND n.nr<26776) OR n.nr=26798 OR (n.nr>26801
AND n.nr<26807) OR n.nr=26808 OR (n.nr>26813 AND n.nr<26816) OR n.nr=26817
OR n.nr=26819 OR (n.nr>26852 AND n.nr<26855) OR (n.nr>26857 AND n.nr<26861)
OR (n.nr>26862 AND n.nr<26865) OR (n.nr>26869 AND n.nr<26874) OR
(n.nr>26874 AND n.nr<26881) OR (n.nr>26881 AND n.nr<26884) OR (n.nr>26902
AND n.nr<26907) OR (n.nr>26907 AND n.nr<26910) OR (n.nr>26910 AND
n.nr<26918) OR n.nr=26923 OR n.nr=26945 OR (n.nr>26946 AND n.nr<26949) OR
(n.nr>26951 AND n.nr<26958) OR n.nr=26959 OR n.nr=26964 OR (n.nr>26965 AND
n.nr<26971) OR n.nr=26972 OR n.nr=26979 OR (n.nr>26998 AND n.nr<27002) OR
n.nr=27004 OR (n.nr>27005 AND n.nr<27008) OR n.nr=27009 OR (n.nr>27011 AND
n.nr<27015) OR (n.nr>27019 AND n.nr<27022) OR (n.nr>27022 AND n.nr<27026)
OR (n.nr>27042 AND n.nr<27050) OR n.nr=27051 OR (n.nr>27052 AND n.nr<27055)
OR n.nr=27064 OR n.nr=27087 OR (n.nr>27088 AND n.nr<27096) OR (n.nr>27096
AND n.nr<27099) OR n.nr=27100 OR n.nr=27106 OR n.nr=27130 OR n.nr=27138 OR
(n.nr>27140 AND n.nr<27145) OR (n.nr>27145 AND n.nr<27150) OR n.nr=27152 OR
n.nr=27154 OR n.nr=27160 OR n.nr=27182 OR n.nr=27184 OR n.nr=27186 OR
(n.nr>27188 AND n.nr<27191) OR (n.nr>27191 AND n.nr<27194) OR n.nr=27195 OR
(n.nr>27200 AND n.nr<27203) OR (n.nr>27204 AND n.nr<27208) OR (n.nr>27223
AND n.nr<27226) OR (n.nr>27230 AND n.nr<27235) OR n.nr=27236 OR n.nr=27242
OR (n.nr>27243 AND n.nr<27246) OR (n.nr>27246 AND n.nr<27249) OR n.nr=27250
OR n.nr=27256 OR n.nr=27258 OR n.nr=27267 OR n.nr=27273 OR n.nr=27276 OR
(n.nr>27277 AND n.nr<27280) OR (n.nr>27281 AND n.nr<27289) OR (n.nr>27299
AND n.nr<27303) OR (n.nr>27308 AND n.nr<27312) OR (n.nr>27332 AND
n.nr<27337) OR n.nr=27339 OR n.nr=27342 OR (n.nr>27344 AND n.nr<27351) OR
(n.nr>27354 AND n.nr<27357) OR (n.nr>27357 AND n.nr<27362) OR (n.nr>27366
AND n.nr<27369) OR n.nr=27370 OR (n.nr>27404 AND n.nr<27407) OR (n.nr>27407
AND n.nr<27410) OR n.nr=27411 OR (n.nr>27412 AND n.nr<27417) OR n.nr=27422
OR (n.nr>27423 AND n.nr<27427) OR n.nr=27431 OR n.nr=27434 OR n.nr=27437 OR
n.nr=27446 OR n.nr=27448 OR n.nr=27454 OR n.nr=27457 OR (n.nr>27458 AND
n.nr<27461) OR (n.nr>27464 AND n.nr<27467) OR (n.nr>27467 AND n.nr<27470)
OR n.nr=27471 OR n.nr=27473 OR (n.nr>27478 AND n.nr<27481) OR n.nr=27486 OR
(n.nr>27488 AND n.nr<27491) OR (n.nr>27497 AND n.nr<27501) OR n.nr=27502 OR
(n.nr>27505 AND n.nr<27511) OR n.nr=27512 OR n.nr=27532 OR n.nr=27534 OR
n.nr=27560 OR (n.nr>27565 AND n.nr<27571) OR (n.nr>27574 AND n.nr<27577) OR
n.nr=27578 OR n.nr=27581 OR n.nr=27585 OR (n.nr>27600 AND n.nr<27604) OR
n.nr=27611 OR (n.nr>27613 AND n.nr<27625) OR (n.nr>27631 AND n.nr<27636) OR
n.nr=27639 OR n.nr=27641 OR n.nr=27655 OR (n.nr>27656 AND n.nr<27659) OR
(n.nr>27659 AND n.nr<27663) OR (n.nr>27663 AND n.nr<27667) OR n.nr=27668 OR
n.nr=27674 OR n.nr=27676 OR n.nr=27678 OR n.nr=27700 OR n.nr=27706 OR
(n.nr>27707 AND n.nr<27712) OR (n.nr>27716 AND n.nr<27719) OR (n.nr>27719
AND n.nr<27726) OR n.nr=27728 OR n.nr=27730 OR (n.nr>27755 AND n.nr<27758)
OR n.nr=27761 OR (n.nr>27762 AND n.nr<27766) OR n.nr=27767 OR n.nr=27773 OR
(n.nr>27774 AND n.nr<27779) OR n.nr=27782 OR (n.nr>27796 AND n.nr<27799) OR
(n.nr>27801 AND n.nr<27808) OR n.nr=27809 OR n.nr=27812 OR (n.nr>27813 AND
n.nr<27817) OR (n.nr>27817 AND n.nr<27823) OR n.nr=27829 OR n.nr=27847 OR
(n.nr>27848 AND n.nr<27852) OR n.nr=27853 OR n.nr=27855 OR (n.nr>27856 AND
n.nr<27859) OR n.nr=27860 OR n.nr=27862 OR n.nr=27864 OR (n.nr>27869 AND
n.nr<27875) OR n.nr=27876 OR n.nr=27879 OR (n.nr>27882 AND n.nr<27885) OR
(n.nr>27903 AND n.nr<27906) OR n.nr=27907 OR n.nr=27911 OR (n.nr>27912 AND
n.nr<27915) OR (n.nr>27961 AND n.nr<27964) OR n.nr=27967 OR (n.nr>27968 AND
n.nr<27974) OR (n.nr>27978 AND n.nr<27984) OR (n.nr>28016 AND n.nr<28022)
OR (n.nr>28022 AND n.nr<28027) OR n.nr=28033 OR (n.nr>28056 AND n.nr<28059)
OR (n.nr>28059 AND n.nr<28065) OR (n.nr>28065 AND n.nr<28068) OR n.nr=28077
OR (n.nr>28083 AND n.nr<28086) OR (n.nr>28090 AND n.nr<28096) OR
(n.nr>28097 AND n.nr<28103) OR n.nr=28112 OR n.nr=28114 OR (n.nr>28116 AND
n.nr<28120) OR (n.nr>28120 AND n.nr<28123) OR (n.nr>28153 AND n.nr<28159)
OR n.nr=28161 OR n.nr=28163 OR (n.nr>28164 AND n.nr<28167) OR (n.nr>28171
AND n.nr<28174) OR (n.nr>28194 AND n.nr<28197) OR (n.nr>28200 AND
n.nr<28206) OR n.nr=28207 OR (n.nr>28212 AND n.nr<28215) OR n.nr=28217 OR
n.nr=28237 OR n.nr=28244 OR (n.nr>28245 AND n.nr<28248) OR (n.nr>28253 AND
n.nr<28262) OR n.nr=28263 OR n.nr=28265 OR n.nr=28268 OR (n.nr>28269 AND
n.nr<28273) OR n.nr=28291 OR n.nr=28293 OR (n.nr>28297 AND n.nr<28301) OR
(n.nr>28301 AND n.nr<28305) OR (n.nr>28308 AND n.nr<28311) OR n.nr=28312 OR
n.nr=28314 OR n.nr=28316 OR n.nr=28324 OR n.nr=28335 OR (n.nr>28345 AND
n.nr<28349) OR (n.nr>28350 AND n.nr<28353) OR (n.nr>28354 AND n.nr<28360)
OR n.nr=28361 OR n.nr=28366 OR (n.nr>28376 AND n.nr<28379) OR (n.nr>28401
AND n.nr<28405) OR (n.nr>28405 AND n.nr<28416) OR (n.nr>28416 AND
n.nr<28419) OR (n.nr>28422 AND n.nr<28425) OR (n.nr>28444 AND n.nr<28449)
OR (n.nr>28449 AND n.nr<28452) OR (n.nr>28453 AND n.nr<28460) OR n.nr=28488
OR (n.nr>28491 AND n.nr<28494) OR n.nr=28495 OR (n.nr>28496 AND n.nr<28504)
OR (n.nr>28505 AND n.nr<28510) OR (n.nr>28510 AND n.nr<28517) OR n.nr=28531
OR (n.nr>28535 AND n.nr<28539) OR (n.nr>28539 AND n.nr<28542) OR
(n.nr>28547 AND n.nr<28551) OR n.nr=28552 OR n.nr=28573 OR n.nr=28576 OR
(n.nr>28578 AND n.nr<28582) OR (n.nr>28582 AND n.nr<28587) OR (n.nr>28599
AND n.nr<28607) OR (n.nr>28607 AND n.nr<28610) OR n.nr=28611 OR (n.nr>28613
AND n.nr<28617) OR (n.nr>28620 AND n.nr<28624) OR (n.nr>28625 AND
n.nr<28628) OR (n.nr>28634 AND n.nr<28639) OR n.nr=28641 OR (n.nr>28642 AND
n.nr<28651) OR n.nr=28657 OR n.nr=28667 OR (n.nr>28668 AND n.nr<28671) OR
(n.nr>28671 AND n.nr<28674) OR (n.nr>28680 AND n.nr<28691) OR (n.nr>28691
AND n.nr<28694) OR n.nr=28695 OR (n.nr>28717 AND n.nr<28721) OR (n.nr>28721
AND n.nr<28724) OR (n.nr>28724 AND n.nr<28729) OR (n.nr>28729 AND
n.nr<28733) OR n.nr=28735 OR (n.nr>28736 AND n.nr<28747) OR n.nr=28748 OR
n.nr=28750 OR (n.nr>28753 AND n.nr<28757) OR n.nr=28758 OR n.nr=28763 OR
n.nr=28765 OR n.nr=28769 OR (n.nr>28771 AND n.nr<28774) OR n.nr=28775 OR
(n.nr>28776 AND n.nr<28779) OR n.nr=28780 OR n.nr=28783 OR (n.nr>28784 AND
n.nr<28794) OR n.nr=28808 OR (n.nr>28810 AND n.nr<28813) OR n.nr=28814 OR
(n.nr>28815 AND n.nr<28821) OR (n.nr>28826 AND n.nr<28834) OR (n.nr>28846
AND n.nr<28849) OR n.nr=28855 OR n.nr=28857 OR n.nr=28859 OR (n.nr>28864
AND n.nr<28870) OR (n.nr>28871 AND n.nr<28876) OR (n.nr>28876 AND
n.nr<28879) OR n.nr=28880 OR n.nr=28884 OR n.nr=28888 OR (n.nr>28889 AND
n.nr<28892) OR (n.nr>28893 AND n.nr<28896) OR (n.nr>28896 AND n.nr<28901)
OR (n.nr>28906 AND n.nr<28909) OR n.nr=28931 OR (n.nr>28937 AND n.nr<28943)
OR n.nr=28948 OR n.nr=28953 OR (n.nr>28958 AND n.nr<28961) OR n.nr=28967 OR
n.nr=28970 OR (n.nr>28972 AND n.nr<28975) OR (n.nr>28975 AND n.nr<28980) OR
(n.nr>28980 AND n.nr<28984) OR n.nr=28991 OR n.nr=28993 OR n.nr=28996 OR
(n.nr>28999 AND n.nr<29002) OR n.nr=29011 OR (n.nr>29012 AND n.nr<29018) OR
(n.nr>29027 AND n.nr<29036) OR n.nr=29038 OR n.nr=29041 OR n.nr=29044 OR
(n.nr>29048 AND n.nr<29051) OR n.nr=29053 OR (n.nr>29055 AND n.nr<29060) OR
n.nr=29062 OR (n.nr>29063 AND n.nr<29069) OR (n.nr>29071 AND n.nr<29075) OR
n.nr=29077 OR n.nr=29079 OR (n.nr>29097 AND n.nr<29100) OR (n.nr>29104 AND
n.nr<29109) OR (n.nr>29109 AND n.nr<29112) OR (n.nr>29115 AND n.nr<29118)
OR (n.nr>29118 AND n.nr<29122) OR n.nr=29135 OR (n.nr>29136 AND n.nr<29140)
OR (n.nr>29143 AND n.nr<29148) OR n.nr=29149 OR n.nr=29155 OR n.nr=29157 OR
(n.nr>29177 AND n.nr<29181) OR (n.nr>29182 AND n.nr<29191) OR n.nr=29196 OR
n.nr=29199 OR (n.nr>29219 AND n.nr<29222) OR (n.nr>29224 AND n.nr<29229) OR
(n.nr>29229 AND n.nr<29233) OR (n.nr>29236 AND n.nr<29239) OR (n.nr>29239
AND n.nr<29244) OR (n.nr>29244 AND n.nr<29249) OR n.nr=29257 OR n.nr=29260
OR (n.nr>29261 AND n.nr<29266) OR n.nr=29267 OR n.nr=29269 OR (n.nr>29270
AND n.nr<29274) OR (n.nr>29276 AND n.nr<29279) OR n.nr=29280 OR n.nr=29282
OR n.nr=29286 OR n.nr=29288 OR n.nr=29290 OR n.nr=29296 OR (n.nr>29297 AND
n.nr<29300) OR (n.nr>29300 AND n.nr<29304) OR (n.nr>29305 AND n.nr<29310)
OR (n.nr>29310 AND n.nr<29314) OR (n.nr>29319 AND n.nr<29324) OR
(n.nr>29328 AND n.nr<29332) OR (n.nr>29335 AND n.nr<29338) OR (n.nr>29338
AND n.nr<29343) OR (n.nr>29347 AND n.nr<29350) OR n.nr=29351 OR n.nr=29354
OR (n.nr>29357 AND n.nr<29367) OR (n.nr>29367 AND n.nr<29371) OR
(n.nr>29372 AND n.nr<29376) OR (n.nr>29377 AND n.nr<29385) OR (n.nr>29386
AND n.nr<29389) OR (n.nr>29393 AND n.nr<29400) OR (n.nr>29405 AND
n.nr<29408) OR (n.nr>29408 AND n.nr<29412) OR n.nr=29413 OR (n.nr>29414 AND
n.nr<29417) OR n.nr=29423 OR (n.nr>29424 AND n.nr<29429) OR (n.nr>29429 AND
n.nr<29433) OR (n.nr>29433 AND n.nr<29439) OR (n.nr>29439 AND n.nr<29443)
OR n.nr=29444 OR (n.nr>29446 AND n.nr<29455) OR n.nr=29456 OR (n.nr>29457
AND n.nr<29461) OR n.nr=29463 OR (n.nr>29464 AND n.nr<29467) OR (n.nr>29467
AND n.nr<29473) OR n.nr=29474 OR n.nr=29476 OR n.nr=29478 OR (n.nr>29479
AND n.nr<29486) OR (n.nr>29486 AND n.nr<29503) OR (n.nr>29509 AND
n.nr<29535) OR (n.nr>29535 AND n.nr<29538) OR (n.nr>29538 AND n.nr<29541)
OR (n.nr>29542 AND n.nr<29548) OR n.nr=29549 OR n.nr=29551 OR (n.nr>29552
AND n.nr<29555) OR n.nr=29556 OR n.nr=29558 OR (n.nr>29560 AND n.nr<29564)
OR (n.nr>29564 AND n.nr<29574) OR (n.nr>29574 AND n.nr<29577) OR n.nr=29578
OR (n.nr>29579 AND n.nr<29582) OR (n.nr>29585 AND n.nr<29589) OR n.nr=29591
OR n.nr=29593 OR n.nr=29595 OR n.nr=29597 OR n.nr=29605 OR n.nr=29607 OR
(n.nr>29608 AND n.nr<29612) OR (n.nr>29615 AND n.nr<29623) OR n.nr=29627 OR
(n.nr>29628 AND n.nr<29633) OR n.nr=29634 OR n.nr=29637 OR n.nr=29643 OR
n.nr=29653 OR (n.nr>29659 AND n.nr<29664) OR (n.nr>29664 AND n.nr<29670) OR
(n.nr>29671 AND n.nr<29677) OR n.nr=29679 OR (n.nr>29682 AND n.nr<29686) OR
(n.nr>29686 AND n.nr<29689) OR (n.nr>29691 AND n.nr<29694) OR (n.nr>29697
AND n.nr<29702) OR (n.nr>29702 AND n.nr<29705) OR (n.nr>29709 AND
n.nr<29713) OR n.nr=29714 OR n.nr=29716 OR (n.nr>29736 AND n.nr<29741) OR
n.nr=29742)
Edited by: 808239 on Apr 19, 2011 7:01 AM
Edited by: 808239 on Apr 19, 2011 7:02 AM