Не исчерпывающий ответ вообще, но хотел дать вам мое понимание.Короче говоря, у Oracle гораздо более развитый оптимизатор SQL.
Для начала у Oracle есть гораздо больше алгоритмов на выбор.Это означает, что иногда Oracle различает тонкие различия и предлагает, скажем, три алгоритма;MySQL (при тех же обстоятельствах) имеет только один на выбор.Поэтому у Oracle есть лучшие варианты для конкретных случаев.
Другое отличие состоит в том, что планы выполнения MySQL не очень читабельны.Я не говорю, что они плохие внутренне, просто что explain extended
не говорит вам много специфических особенностей.Oracle очень четко различает предикаты access и filter , в то время как в MySQL вы на самом деле не знаете, что происходит.
В Oracle есть много алгоритмов, подходящих для параллельной работы.обработка на нескольких серверах, в то время как MySQL ограничен несколькими потоками на одном компьютере.Это может иметь значение для высоко параллелизуемых запросов, чем преимущество для мультисерверов.
В Oracle все еще есть RBO (оптимизатор на основе правил), который может быть полезен в некоторых случаях.MySQL нет.Во всяком случае, Oracle рекомендует не использовать его, но он все еще там, если вам это нужно.
Oracle предлагает множество оптимизаторов в форме комментариев (/* ... */
, насколько я помню?) где вы можете настроить план выполнения в соответствии с вашими потребностями.В MySQL для этого меньше «оговорок».