PostgreSQL �̎��s�v��� Tid Scan

PostgreSQL �ɂ� ORACLE �� ROWID �̂悤�� �s��f�����w�肷�邽�߂̗� ctid ������܂��B

db=# SELECT ctid, * FROM test.table1;

   ctid   |   f1  |      f2
----------+-------+---------------
 (0,1)    | A143H | test@test.com
 (0,2)    | A393G | test@test.com
 (0,3)    | A380E | test@test.com
 (0,4)    | A147K | test@test.com

ctid �́A�s�o�[�W�����̕����I�ʒu�Ȃ̂� �s���X�V������AVACUUM FULL �ŕς���Ă��܂��܂��B

�����A���� ctid ���g�p����Ƃ��Ȃ葁���s���擾�ł��܂��B ���̂Ƃ��̎��s�v��ɏo�Ă��鉉�Z�q�� Tid Scan �Ȃ̂ł��B

���ۂɎ��s�v����擾���Ă݂܂��B

db=# EXPLAIN
db-# SELECT * FROM test.table1 WHERE ctid = '(0,2)';

                         QUERY PLAN
------------------------------------------------------------
Tid Scan on table1  (cost=0.00..4.01 rows=1 width=218)
  TID Cond: (ctid = '(0,2)'::tid)

Tid Scan �Əo�܂����B

PRIMARY KEY �Ō��������ꍇ�̎��s�v����擾���Ă݂܂��B

db=# EXPLAIN
db-# SELECT * FROM test.table1 WHERE field1 = 1;

                                QUERY PLAN
---------------------------------------------------------------------------
 Index Scan using table1_pkey on table1  (cost=0.00..8.27 rows=1 width=50)
   Index Cond: ((field1)::text = '1'::text)

Index Scan ������� Tid Scan �̕����R�X�g���������ł��ˁB

psql �ŃR�}���h���C������ϐ��ɒl��������

�O�� psql �̕ϐ��ɂ‚��ď����܂����� �ϐ��ւ̒l�̑���� psql ���N������R�}���h���C��������ł��܂��B �Ƃ������A�o�b�`�����Ȃǂ��l����Ƃ����������C���ɂȂ�Ǝv���܂��B �i�q�A�h�L�������g�Ƃ����������܂����j

SQL �́A�O���Ɠ������̂��g�p���܂��B

SELECT * FROM generate_series(1, 100) 
WHERE generate_series between :start AND :end;

start �� end �Ƃ��� 2 �‚̕ϐ����g�p���Ă��܂��B

�R�}���h���C���Ŏw�肷��ɂ́Av �I�v�V�������g�p���܂��B

$ psql -f test.sql -v start=3 -v end=9 db

 generate_series
-----------------
               3
               4
               5
               6
               7
               8
               9
(7 rows)

����̓��t����Ԃ� SQL �����s�������ꍇ�ȂǂɎg���܂��B

psql �ŕϐ�������

ORACLE �� sql*plus �ȂǂƓ����悤�� psql �ł��ϐ����������Ƃ��ł��܂��B

�ϐ��� set �R�}���h�Œl�������܂��B

db=# \set value 2

��̗�ł́Avalue �Ƃ����ϐ��� 2 �����܂����B

�O��� echo �R�}���h�ŁA�l���o�͂ł��܂��B

db=# \echo :value
2

SQL �̒��Ŏg�p���邱�Ƃ��ł��܂��B

db=# SELECT :value;

 ?column?
----------
        2
(1 row)

�ϐ����g���� SQL �̏�����ݒ肷�邱�Ƃ��ł��܂��B

db=# \set start 3
db=# \set end 10
db=# \echo :start - :end
3 - 10

�ϐ���ݒ肵�āAWHERE ��Ŏg�p���܂��B

db=# SELECT * FROM generate_series(1, 100) 
db-# WHERE generate_series between :start AND :end;

 generate_series
-----------------
               3
               4
               5
               6
               7
               8
               9
              10
(8 rows)

�Ӗ��̖��� SQL �ł����A3 ���� 10 �ɂ��ڂ�Ă��܂��B

�R�}���h�̌��ʂ��ϐ��ɑ���ł��܂����A ������������ꍇ�A�G�X�P�[�v��������Ƃ�₱�����ł��B

db=# \set today ''''`date +"%Y/%m/%d"`''''
db=# select :today;

  ?column?
------------
2012/12/15

psql �̏o�̓R�}���h

psql �ɂ� \echo \qecho �Ƃ����R�}���h������܂��B

db=# \echo hello
hello

���̂悤�ɕ�������o�͂��邱�Ƃ��ł��܂��B

�܂��R�}���h�����s�ł��܂��B

db=# \echo `date +"%Y/%m/%d"`
2012/12/15

�R�}���h�̓o�b�N�N�H�[�g�ň݂͂܂��B

db=# \echo `pwd`
/tmp

���̂悤�� psql ���g�p���Ă���Ƃ��� ���O�t�@�C���� �F�X�Əo�͂ł���̂ŕ֗��ł��B

$ psql -f test.sql db > test.log

���N������ Python ?

���̂悤�Ȃ��Ƃ��l�b�g�œǂ�� ���̎��ӂ��E���E�����Ă����� Bottle �Ƃ��� Python �� Web �t���[�����[�N���Љ�Ă���T�C�g������܂����B

[�Q�l�T�C�g]
Python���n�߂�Ȃ�A�P�t�@�C���̌y��Web�t���[�����[�N�uBottle�v���������� - ���W���O

���̋C�Ȃ��Ɏ����Ă݂�� 30�b���炢�� Web �y�[�W���\������܂����B �d�g�݂̓T�b�p���ł����A�Ƃɂ��������܂����B

�����͏�L�T�C�g�ɏ����Ă���܂����A����Ȋ����ł��B

  • 1�t�@�C�����_�E�����[�h���� Python �������Ă�T�[�o�ɒu��
  • �����t�H���_�� hello �o�͗p�̃X�N���v�g��u���i�R�s�y�j
  • ��L�X�N���v�g���N������

�Ƃɂ��������ɓ������Ƃ���܂ł������̂��ǂ������ł��B

�މ�V�N 2013

�����܂��Ă��߂łƂ��������܂��B
���߂Ă̐l���A�����Ŗ����l���A ���N����낵�����肢���܂��B

WRITE_0663_01

�S�Ă̋Z�p�҂Ƃ��� 2013�N���ǂ��N�ɂȂ�܂��悤�ɁI

Google �T�C�g������

Amazon�A�\�V�G�C�g