初Qiita投稿です。わーい
ちなみにこちらは、
Geek Women Japan Advent Calendar 2017 19日目の記事です。
https://qiita.com/advent-calendar/2017/geekwomenjapan
Geek Womenなのに、内容はgeekっぽくないです。(はじめに)
なんかもう迷える子羊的な内容。。。
-
記事背景
-
10月から派遣先が変わったが、そこがPostgreSqlだった。
-
一人1システム担当 → DB設計~製作・テスト~リリースまで全部やる
-
PostgreSql初!! → 今まで使ったRDBはOracle、SQLServer、Mysqlとその仲間達(MariaとかAurora)
そんなに他のDBと変わらないよー。と言われてましたが、
いざやってみたら結構違うー
- テーブル一覧表示
- Postgresql :
\d
- Mysql :
SHOW TABLES FROM データベース名
- Postgresql :
- システム日付取得方法
- oracle :
sysdate
- mysql :
now
,sysdate
- postgresql :
now
,current_timestamp
このあたりは、あからさまに違うのでどこかにメモっておけばよいのですが、
一見違いがなさそうなのに、結構違う。というのが下記です。
空白で埋められる型を使用した場合の保存領域の増加、および、長さ制限付きの列に格納する際に長さを検査するためにいくつか余計なCPUサイクルが加わる点を別にして、これら3つの型の間で性能に関する差異はありません。 他の一部のデータベースシステムではcharacter(n)には性能的な優位性がありますが、PostgreSQLではこうした利点はありません。 実際には、格納の際に追加のコストがあるため、character(n)は3つの中でもっとも低速です。 多くの場合、代わりにtextかcharacter varyingを使うのがお薦めです。
…他のDBからPostgreSQLに移行したけど性能がでない。とか起きそう。
他にも変わっているところでは、下記の特別な文字データ型。
型名 | 格納サイズ | 説明 |
---|---|---|
"char" | 1バイト | 単一バイト内部データ型 |
name | 64バイト | オブジェクト名用の内部データ型 |
"char"とcharactorは別物で、
"char"はシステムカタログで内部的に使用される。との説明が。
内部的に使用される?普通に使えないの?という疑問が
ちなみに"char"でテーブル作成して、insert, update, delete したけど、
普通に使えました。んー
PostgreSQLまだまだ修行が必要です。。。
それでは、このへんで。
明日は @KamekoKameKame さんです