Improving the below oracle query to be more effective












-2















I am a new learner to the oracle world of sql queries but still how I need to bring the data from two tables for which I have fetched the query , now please advise is the below query is correct or still I can make it more efficient , any suggestions to improve it are welcome , Here below is the my query










share|improve this question




















  • 1





    HOw would we know what "correct" is? How do you know it is not "efficient?" What indexes do you have on the table? Did you run an explain plan? This question is too broad. Can't really help without more details. Sorry

    – OldProgrammer
    Nov 24 '18 at 17:52













  • What query? Looks like you removed it in an edit, leaving the question meaningless. Please don't do that.

    – William Robertson
    Nov 25 '18 at 12:25
















-2















I am a new learner to the oracle world of sql queries but still how I need to bring the data from two tables for which I have fetched the query , now please advise is the below query is correct or still I can make it more efficient , any suggestions to improve it are welcome , Here below is the my query










share|improve this question




















  • 1





    HOw would we know what "correct" is? How do you know it is not "efficient?" What indexes do you have on the table? Did you run an explain plan? This question is too broad. Can't really help without more details. Sorry

    – OldProgrammer
    Nov 24 '18 at 17:52













  • What query? Looks like you removed it in an edit, leaving the question meaningless. Please don't do that.

    – William Robertson
    Nov 25 '18 at 12:25














-2












-2








-2








I am a new learner to the oracle world of sql queries but still how I need to bring the data from two tables for which I have fetched the query , now please advise is the below query is correct or still I can make it more efficient , any suggestions to improve it are welcome , Here below is the my query










share|improve this question
















I am a new learner to the oracle world of sql queries but still how I need to bring the data from two tables for which I have fetched the query , now please advise is the below query is correct or still I can make it more efficient , any suggestions to improve it are welcome , Here below is the my query







oracle






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 25 '18 at 3:30







sss

















asked Nov 24 '18 at 17:12









ssssss

56110




56110








  • 1





    HOw would we know what "correct" is? How do you know it is not "efficient?" What indexes do you have on the table? Did you run an explain plan? This question is too broad. Can't really help without more details. Sorry

    – OldProgrammer
    Nov 24 '18 at 17:52













  • What query? Looks like you removed it in an edit, leaving the question meaningless. Please don't do that.

    – William Robertson
    Nov 25 '18 at 12:25














  • 1





    HOw would we know what "correct" is? How do you know it is not "efficient?" What indexes do you have on the table? Did you run an explain plan? This question is too broad. Can't really help without more details. Sorry

    – OldProgrammer
    Nov 24 '18 at 17:52













  • What query? Looks like you removed it in an edit, leaving the question meaningless. Please don't do that.

    – William Robertson
    Nov 25 '18 at 12:25








1




1





HOw would we know what "correct" is? How do you know it is not "efficient?" What indexes do you have on the table? Did you run an explain plan? This question is too broad. Can't really help without more details. Sorry

– OldProgrammer
Nov 24 '18 at 17:52







HOw would we know what "correct" is? How do you know it is not "efficient?" What indexes do you have on the table? Did you run an explain plan? This question is too broad. Can't really help without more details. Sorry

– OldProgrammer
Nov 24 '18 at 17:52















What query? Looks like you removed it in an edit, leaving the question meaningless. Please don't do that.

– William Robertson
Nov 25 '18 at 12:25





What query? Looks like you removed it in an edit, leaving the question meaningless. Please don't do that.

– William Robertson
Nov 25 '18 at 12:25












1 Answer
1






active

oldest

votes


















2














You should not convert your date datatypes to character when doing the comparisons. This has two negative effects




  1. You effectively "hide" the statistics on those columns, which means
    the optimizer may not make the best choice of execution plan

  2. If you have indexes on the columns, you are preventing their use.


If your CREATED_ON and MODIFIED_ON columns do not store a time portion, then your predicates can be simply



BC.CREATED_ON = trunc(SYSDATE)
OR
BC.MODIFIED_ON = trunc(SYSDATE)


If your columns do include a time portion, then you should formulate your predicates as shown



BC.CREATED_ON >= trunc(sysdate) and BC.CREATED_ON < trunc(sysdate)+1
or
BC.MODIFIED_ON >= trunc(sysdate) and BC.MODIFIED_ON < trunc(sysdate)+1


What you are trying to do, is avoid having a function applied to the columns, TO_CHAR() in your question






share|improve this answer

























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53460548%2fimproving-the-below-oracle-query-to-be-more-effective%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    2














    You should not convert your date datatypes to character when doing the comparisons. This has two negative effects




    1. You effectively "hide" the statistics on those columns, which means
      the optimizer may not make the best choice of execution plan

    2. If you have indexes on the columns, you are preventing their use.


    If your CREATED_ON and MODIFIED_ON columns do not store a time portion, then your predicates can be simply



    BC.CREATED_ON = trunc(SYSDATE)
    OR
    BC.MODIFIED_ON = trunc(SYSDATE)


    If your columns do include a time portion, then you should formulate your predicates as shown



    BC.CREATED_ON >= trunc(sysdate) and BC.CREATED_ON < trunc(sysdate)+1
    or
    BC.MODIFIED_ON >= trunc(sysdate) and BC.MODIFIED_ON < trunc(sysdate)+1


    What you are trying to do, is avoid having a function applied to the columns, TO_CHAR() in your question






    share|improve this answer






























      2














      You should not convert your date datatypes to character when doing the comparisons. This has two negative effects




      1. You effectively "hide" the statistics on those columns, which means
        the optimizer may not make the best choice of execution plan

      2. If you have indexes on the columns, you are preventing their use.


      If your CREATED_ON and MODIFIED_ON columns do not store a time portion, then your predicates can be simply



      BC.CREATED_ON = trunc(SYSDATE)
      OR
      BC.MODIFIED_ON = trunc(SYSDATE)


      If your columns do include a time portion, then you should formulate your predicates as shown



      BC.CREATED_ON >= trunc(sysdate) and BC.CREATED_ON < trunc(sysdate)+1
      or
      BC.MODIFIED_ON >= trunc(sysdate) and BC.MODIFIED_ON < trunc(sysdate)+1


      What you are trying to do, is avoid having a function applied to the columns, TO_CHAR() in your question






      share|improve this answer




























        2












        2








        2







        You should not convert your date datatypes to character when doing the comparisons. This has two negative effects




        1. You effectively "hide" the statistics on those columns, which means
          the optimizer may not make the best choice of execution plan

        2. If you have indexes on the columns, you are preventing their use.


        If your CREATED_ON and MODIFIED_ON columns do not store a time portion, then your predicates can be simply



        BC.CREATED_ON = trunc(SYSDATE)
        OR
        BC.MODIFIED_ON = trunc(SYSDATE)


        If your columns do include a time portion, then you should formulate your predicates as shown



        BC.CREATED_ON >= trunc(sysdate) and BC.CREATED_ON < trunc(sysdate)+1
        or
        BC.MODIFIED_ON >= trunc(sysdate) and BC.MODIFIED_ON < trunc(sysdate)+1


        What you are trying to do, is avoid having a function applied to the columns, TO_CHAR() in your question






        share|improve this answer















        You should not convert your date datatypes to character when doing the comparisons. This has two negative effects




        1. You effectively "hide" the statistics on those columns, which means
          the optimizer may not make the best choice of execution plan

        2. If you have indexes on the columns, you are preventing their use.


        If your CREATED_ON and MODIFIED_ON columns do not store a time portion, then your predicates can be simply



        BC.CREATED_ON = trunc(SYSDATE)
        OR
        BC.MODIFIED_ON = trunc(SYSDATE)


        If your columns do include a time portion, then you should formulate your predicates as shown



        BC.CREATED_ON >= trunc(sysdate) and BC.CREATED_ON < trunc(sysdate)+1
        or
        BC.MODIFIED_ON >= trunc(sysdate) and BC.MODIFIED_ON < trunc(sysdate)+1


        What you are trying to do, is avoid having a function applied to the columns, TO_CHAR() in your question







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Nov 24 '18 at 21:38

























        answered Nov 24 '18 at 19:47









        BobCBobC

        2,9021613




        2,9021613
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53460548%2fimproving-the-below-oracle-query-to-be-more-effective%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Wiesbaden

            Marschland

            Dieringhausen