エンジニア的な技術的なブログ

webエンジニアの開発の知見を書きます。PHP、javascript、postgres、mysql、あと多少のインフラ周りとか。

postgresql

centOS7にLAPP環境(postgresの9.3で)をインストール

<環境> ニフティクラウド centOS7 <やりたいこと> LAPP環境作りたい。 phpはyumにある5.4でいい postgresはyumになる9.2はダメ。9.3を入れる必要がある。 <なんと> centOS7からserviceコマンドとかapachectlコマンド使えなくなってました,,,, 公開から…

postgresで強制的にインデックスを効かせるSQLがあるぜ。

そこそこ大きなテーブルの検索処理のパフォーマンスチューニングをやっていてぶつかった課題。 SQLだけで、ポスグレのオプティマイザに判断させずに、使えるインデックスがある場合には必ず使わせることができます。 というおまじないがこれ set local enabl…

postgresでトリガー関数を一覧したいときのSQL

ポスグレでトリガー関数の一覧をみるときのSQL SELECT * FROM pg_trigger; と。

postgresでテーブルAの値をjoinしてテーブルBに入れたいとき

MySQLならば単純に UPDATE tabel_b b INNER JOIN table_a a ON b.a_id = a.id SET bcol = a.col みたいなことでできたと思いますが、postgresはダメらしい。 ちょっと違う書き方をします。 ポイントはFROM句をつかい、WHERE句で結合させること。 UPDATE tabl…

テーブルリスト、カラムリストをSQLで取得する[postgres]

postgresでSQLたたいて、取得したいときに! 結論だけ テーブルリスト \d カラムリスト \d table_name これだけ! mysqlは、、、2年位扱ってないから忘れた。。

あるカラムの値が重複しているレコードを抽出するSQL

久々に記事書くなぁ〜。 こんな感じ。 product_codeが重複しているuser_id 80の情報を抽出する。 >|SQL| SELECT product_id, product_code, create_date FROM productsWHERE user_id = 80 AND product_code IN ( SELECT product_code FROM products WHERE us…

mysqlしか使ったことない人へ postgres超入門1

僕はもともとmysqlばっかり使ってたが、案件でポスグレ(postgreSQL)を使うことがありました。 大した話しではないけど、msyqlとの大きな違いを教えますー違い1:スキーマっていう概念 msyqlだとデータベースがあって、その中にテーブルがある という構造だ…

postgresのDB容量、テーブルごとの容量を調べるとき

運用中のDBの容量を知りたいとき、あると思います。 そんな方法DBごとでも、テーブルごとでも流れは同じ調べたい対象のidを調べる → そのidからデータ量を調べる です。ポスグレには、pg_stag_database という統計情報のテーブルがあるようなんで、 それを使…

エンジニア(初級)の皆様 postgresでファイルに書いてあるsqlをガツン!と実行する方法

なんかあるだろうーなーとは思ってたけど知らなかったよ。 ファイルにSQLを書き出しておいて、一括で実行する方法です。 \i [file path] これだけ。 あ、ポスグレにログインしてから実行してね。ちなみにtabも効きます。posgreにログインしないでやる場合は…

SELECTした結果をそのまんまINSERTできる

これまたよくあるパターンです。 テーブル Aを検索して、集計などなどして、 テーブル Bに結果をINSERTしたい。 ていうケースについて 結論こんな感じです >|sql| INSERT INTO dtb_category_range_count SELECT range_id, count(product_id) AS cnt FROM dtb…

SELECTした結果はそのまんまUPDATEできるよ! 

エンジニアならよくやると思うけど、 テーブルAの検索結果を集計なりなんなりして、 テーブルBに保存するっていうケース UPDATEにFROM句つかってサブクエリやれば、さくっといける SLECT結果をグルグルループしながらアップデートってのもあるけど、 件数多…

postgresql9.2 をインストールする方法。あと8系を削除する方法

postgresqlの8系から9系へのバージョンアップ方法 ただ、9系をインストールしようとしても、 8系と9系は別のアプリケーションとして 同じサーバに両方存在していまいます。 ので、8系を削除してから9系をインストールします。 ちなみに9系をインスト…

postgresql9.2 をインストールする方法。あと8系を削除する方法

これに書いてある。 http://morizyun.github.io/blog/postgresql-mac-centos-rails/ 既にpostgreq8系が入っているときは、これだけだとダメ postgresユーザになってホームディレクトリにある .bash_profileにコマンドのパスを通す su - postgres cd ~/ vi .b…