2009-05-08 14 views
5

Sybase、Infomix、DB2などの他のデータベース製品を何年も使用してMySQL 5.1 Enterpriseを使用している場合。私はMySQLがやっていないことを実行します。たとえば、SELECTクエリのEXPLAINクエリプランのみを生成できます。MySQLの制限

他に注意すべきことはありますか?

+1

イタリック体の単語「real」は、この問題を主観的、議論的に閉じてしまいます。 – chaos

+0

ok、* real *をclosed-sourceに変更しました –

+0

そのフレーズを完全に削除することをお勧めします。 "何年ものデータベース製品を使用している..." –

答えて

4

完全な外部結合。しかし、あなたはまだ左外部結合ユニオン右外部結合を行うことができます。

7

あなたはここに長いリストを見てみましょうことがあります。MySQL Gotchas

+0

良いリストですが、MySQL 5.0では100%正確ではないかもしれません。 –

+0

私は上記のmysqlバージョンを明確にしました –

1

をロールまたはグループ

1

のためにそれは幸運をかからないようにします。 Oracleデータベースに複数のコアがある複数のマシンにクラスタ化されたWebサイトを構築してみてください。ああ。

1

CHECK制約はまだありません。

2

私がプロジェクトの遅れて実行したことの1つは、MySQLの日付タイプにはミリ秒を保存できないということです。 Datetimesとタイムスタンプは秒に解決します!私はこれが起こった正確な状況を覚えていませんが、私は自分のコードで日付に変換できる整数(ミリ秒で完了)を格納する必要がありました。

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ドライバがメモリ内キャッシュの結果ではないでしょう、そしてあなたのことを行う場合巨大なクエリを行うことができますしかし、あなたはORMシステムを使用している場合は?自分でステートメントを作成するわけではないので、キャッシングを切り替えることはできません。 ORMシステムがたくさんのレコードを含む何かをしようとしているならば、基本的にあなたは完全に嫌になります。

意味があった場合、JDBC URLによって設定可能になります。しかたがない。