mysql与oracle相比的几个缺陷

新公司使用mysql存储关键业务数据,之前没有mysql经验,本觉得应该跟oracle差很少,阅读文档比较后发现仍是有不少不一样点。mysql

  1. mysql不共享缓存的执行计划。sql

    在oracle里,sql语句的执行计划是缓存在SGA中的,因此oracle中能够使用绑定变量、数组接口等方式达到提高性能的可能,可是mysql不共享执行计划,有一种叫预处理语句的东西,看起来好像跟oracle绑定变量相似,但其实不能达到避免语句每次都硬解析的效果。数组

  2. innodb存储引擎不支持位图索引、函数索引缓存

    不仅是innodb,好像目前尚未支持位图索引的存储引擎,通常都是传统的B树索引。oracle

  3. mysql的查询优化器不够理想函数

    一个例子,一个低基数列上有B树索引,根据这个字段查询,optimizer给出的执行计划是走索引,而经过ignore index的方式强制不走索引,发现执行时间更少,说明optimizer给出了错误的执行计划。性能

  4. 没有oracle那么丰富的伪列、扩展函数,也不支持层次查询、窗口函数优化

    如rowid、rownum等索引

相关文章
相关标签/搜索