以前、こんなことをいってたのですが、なかなか時間がとれず。。。。
今回時間がとれて通してみたので、気になった点だけを以下メモ書きです。
ほとんど重箱の隅をつつくようなものです。(特に問題となるような記述はねえっす)
(1) 実践ハイパフォーマンスMySQ第3版の追記
表記ルールxix
†1 監訳注: に以下も追記してもらえるとありがたいですね。。。。
なお実践ハイパフォーマンスMySQLはMySQL 5.5に対応した第3版が出版され邦訳もでています。
(2) サンプルデータベース xxi
SERIAL は BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE の別名ですね。なじみない人もいるかもしれません。
p.5
(3) REGEXPも含めた正規表現は、MySQLではマルチバイト未対応です。
REGEXP および RLIKE 演算子はバイト単位で機能するためマルチバイトに対して安全ではなく、マルチバイトキャラクタセットで予期しない結果が発生する可能性があります。
http://dev.mysql.com/doc/refman/5.1-olh/ja/regexp.html
p.19
(4) 「共通テーブル式を用いた再起クエリは、」の例にFirebird 2.1も加えていただけると助かります。
http://dev.mysql.com/doc/refman/5.1-olh/ja/regexp.html
なお、なぜDB2だけバージョン番号がないかというと、もともと共通テーブル式を用いた再起クエリは、IBM DB2の方言だったからです。
p.26
(5) 入れ子区間モデルに英語も併記してほしい。入れ子区間モデル(Nested Intervals Model)
p.31
†6 監訳注: は当該2nd Editionの記述とプログラマのためのSQL新版にも言及してもらえるとありがたいですね。。。。
†6 監訳注:『Trees and Hierarchies in SQL for Smarties』[Cel04]は第二版が出版されましたが、初版・第二版ともに邦訳は残念ながらありません。階層構造の扱いに関して日本語で読めるセルコの著作には『プログラマのためのSQL第二版』[Cel01]と第四版があります。
p.139
(6) カバーリングインデックス
PostgreSQLが同等の機能(INDEX ONLY SCAN)を実装したのはPostgreSQL 9.2からです。
http://www.atmarkit.co.jp/ait/articles/1307/12/news004.html
p.140
(7) LOAD INDEX INTO CACHE
LOAD INDEX INTO CACHEが有効なのはMyISAM型テーブルのみです。
http://dev.mysql.com/doc/refman/5.1-olh/ja/load-index.html
p.138, 141
(8) Firebirdに関する追記
QEPは SET PLANONLY ON
インデックスのメンテナンスコマンドは SET STATISTICS
p.151
(9) 13.5.1 スカラー式でのNULL
Microsoft SQL Serverの古いバージョンやSET ANSI_NULLSオプションがOFFにできるバージョンでは
= NULLがTRUEやFALSEを返します。
http://technet.microsoft.com/ja-jp/library/ms191270%28v=sql.105%29.aspx
これはMicrosoft SQL Serverの祖先であるSybaseの仕様からきています。Sybase ASEでもANSINULL=OFFにすると
同様に=NULLがNULLではなくTRUEやFALSEを返します。
http://sybasease.blogspot.jp/2005/05/nulls-in-sybase-ase.html
p.174,175
MySQLの正規表現によるパターンマッチング(RLIKE, REGEXP)は日本語を含むマルチバイトに対応していません。
PlanetMySQL Voting: Vote UP / Vote DOWN
今回時間がとれて通してみたので、気になった点だけを以下メモ書きです。
ほとんど重箱の隅をつつくようなものです。(特に問題となるような記述はねえっす)
(1) 実践ハイパフォーマンスMySQ第3版の追記
表記ルールxix
†1 監訳注: に以下も追記してもらえるとありがたいですね。。。。
なお実践ハイパフォーマンスMySQLはMySQL 5.5に対応した第3版が出版され邦訳もでています。
(2) サンプルデータベース xxi
SERIAL は BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE の別名ですね。なじみない人もいるかもしれません。
p.5
(3) REGEXPも含めた正規表現は、MySQLではマルチバイト未対応です。
REGEXP および RLIKE 演算子はバイト単位で機能するためマルチバイトに対して安全ではなく、マルチバイトキャラクタセットで予期しない結果が発生する可能性があります。
http://dev.mysql.com/doc/refman/5.1-olh/ja/regexp.html
p.19
(4) 「共通テーブル式を用いた再起クエリは、」の例にFirebird 2.1も加えていただけると助かります。
http://dev.mysql.com/doc/refman/5.1-olh/ja/regexp.html
なお、なぜDB2だけバージョン番号がないかというと、もともと共通テーブル式を用いた再起クエリは、IBM DB2の方言だったからです。
p.26
(5) 入れ子区間モデルに英語も併記してほしい。入れ子区間モデル(Nested Intervals Model)
p.31
†6 監訳注: は当該2nd Editionの記述とプログラマのためのSQL新版にも言及してもらえるとありがたいですね。。。。
†6 監訳注:『Trees and Hierarchies in SQL for Smarties』[Cel04]は第二版が出版されましたが、初版・第二版ともに邦訳は残念ながらありません。階層構造の扱いに関して日本語で読めるセルコの著作には『プログラマのためのSQL第二版』[Cel01]と第四版があります。
p.139
(6) カバーリングインデックス
PostgreSQLが同等の機能(INDEX ONLY SCAN)を実装したのはPostgreSQL 9.2からです。
http://www.atmarkit.co.jp/ait/articles/1307/12/news004.html
p.140
(7) LOAD INDEX INTO CACHE
LOAD INDEX INTO CACHEが有効なのはMyISAM型テーブルのみです。
http://dev.mysql.com/doc/refman/5.1-olh/ja/load-index.html
p.138, 141
(8) Firebirdに関する追記
QEPは SET PLANONLY ON
インデックスのメンテナンスコマンドは SET STATISTICS
p.151
(9) 13.5.1 スカラー式でのNULL
Microsoft SQL Serverの古いバージョンやSET ANSI_NULLSオプションがOFFにできるバージョンでは
= NULLがTRUEやFALSEを返します。
http://technet.microsoft.com/ja-jp/library/ms191270%28v=sql.105%29.aspx
これはMicrosoft SQL Serverの祖先であるSybaseの仕様からきています。Sybase ASEでもANSINULL=OFFにすると
同様に=NULLがNULLではなくTRUEやFALSEを返します。
http://sybasease.blogspot.jp/2005/05/nulls-in-sybase-ase.html
p.174,175
MySQLの正規表現によるパターンマッチング(RLIKE, REGEXP)は日本語を含むマルチバイトに対応していません。
PlanetMySQL Voting: Vote UP / Vote DOWN