在使用其他数据库产品(如Sybase,Infomix,DB2)多年后使用MySQL 5.1 Enterprise时;我遇到了MySQL不做的事情。例如,它只能为SELECT查询生成EXPLAIN查询计划。
我应该注意哪些其他事项?
答案 0 :(得分:7)
您可以在此处查看长列表:MySQL Gotchas
答案 1 :(得分:4)
全外连接。但你仍然可以做一个左外连接联合右外连接。
答案 2 :(得分:2)
我在项目中遇到的一件事是MySQL日期类型无法存储毫秒。日期时间和时间戳只能解决几秒钟!我不记得这出现的确切情况但我最终需要在我的代码中存储一个可以转换为日期(以毫秒为单位)的int。
MySQL的JDBC驱动程序默认缓存结果,以至于它会导致程序内存不足(抛出OutOfMemory异常)。您可以将其关闭,但必须通过在创建语句时将一些不常见的参数传递到语句中来执行此操作:
Statement sx = c.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,java.sql.ResultSet.CONCUR_READ_ONLY);
sx.setFetchSize(Integer.MIN_VALUE);
如果你这样做,JDBC驱动程序不会将结果缓存到内存中,你可以进行大量查询 BUT 如果你正在使用ORM系统怎么办?您不自己创建语句,因此无法转换缓存。这基本上意味着如果你是ORM系统试图做一些涉及大量记录的事情,你就完全搞砸了。
如果他们有某种意义,他们会通过JDBC URL进行配置。哦,好吧。
答案 3 :(得分:1)
允许角色或群组
答案 4 :(得分:1)
它不会花费一大笔钱。尝试在Oracle数据库上具有多个核心的多台计算机上构建群集网站。哎哟。
答案 5 :(得分:1)
它仍然没有做CHECK约束!