mysql 切换成 oracle

mysql 切换成 oracle,第1张

在mysql中,数据表的主键是 auto increment

在oracle中,不支持 auto increment

<table> 标签中添加generateKey 子标签,同时需要在oracle中创建sequence。示例:

mysql的排序语句

在oracle中不支持,直接换成

即可

mysql的模糊查询语句

oracle中的concat只支持两个参数,会报参数个数错误,替换成下面的

or

注意,mysql中不支持用 || 的模糊查询

mysql中的别名可以使用uid,但是uid在oracle中是一个保留关键字。替换成oracle之后,注意有别名设置成uid的别名语句是不能通过执行的。(报找不到 from关键字)

今天听到一种说法,说OR会使索引失效,最好使用UNION代替。查了一下发现的确有些文章这么说。但总觉得没什么道理。直觉上觉得虽然or连接的查询条件不能使用联合索引,但感觉两个单独的索引是可以用的。看了一些文章,感觉一直很疑惑。

于是试了一下,发现果然如此。

这里的type项是index_merge。搜索后发现是MySQL5.0后的新技术,索引合并。index merge 技术简单说就是在用OR,AND连接的多个查询条件时,可以分别使用前后查询中的索引,然后将它们各自的结果合并交集或并集。当然具体是否使用index merge,优化器会自己选择,比如and连接时有联合索引,或干脆全表查询就很快,就没必要使用它了。

具体可以查阅文档: https://dev.mysql.com/doc/refman/5.6/en/index-merge-optimization.html

还是很有意思的。

可能因为mysql这个东西太复杂,感觉sql优化都快成玄学了。网上流传了很多“奇技淫巧”,让人真假难辨。我觉得可能是过去mysql优化不是很好时,大家有一些优化的技巧,但随着mysql更新优化,现在已经成为过时甚至错误的做法。但这些说法还在流传,造成了我这样的新手的困惑。

所以看来小白要学技术,还是要踏实点多看官方文档,多亲自实践,少看博客,少道听途说。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7190148.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存