�C���f�b�N�X�̊�b�m��

��

�� �C���f�b�N�X�Ƃ�

�f�[�^�x�[�X�̐��E�ŁA�C���f�b�N�X(����)�Ƃ̓e�[�u���Ɋi�[����Ă���f�[�^��

�����Ɏ��o���ׂ̎d�g�݂��Ӗ����܂��B

�C���f�b�N�X��K�؂Ɏg�p���邱�Ƃɂ����SQL���̉������Ԃ����I�ɉ��P

�����”\��������܂��B

�C���f�b�N�X�ɂ�B-Tree�C���f�b�N�X���͂��߁A�r�b�g�}�b�v�C���f�b�N�X�A

�֐��C���f�b�N�X�Ȃǂ̎�ނ�����܂����A�����ł͍ł���ʓI�Ɏg���A����

�قƂ�ǂ�DBMS�ŃT�|�[�g����Ă���B-Tree�C���f�b�N�X�ɂ‚��ĉ�����܂��B

�� CREATE INDEX���ŃI�v�V�������w�肵�Ȃ��ꍇ�͒ʏ�B-Tree�C���f�b�N�X��

�쐬����܂��B


�� B-Tree�C���f�b�N�X�̂�����

B-Tree(Balanced Tree)�C���f�b�N�X�͎��̂悤�ȃc���[��̍\���ɂȂ��Ă��܂��B



�c���[�̐擪�̓w�b�_�u���b�N�ƌĂ΂�Ă��܂��B�w�b�_�u���b�N�ł́A�L�[�l��

�͈͂Ɖ��w�̃u���b�N�ւ̃|�C���^���Ǘ����Ă��āA�L�[�̒l���w�肳�ꂽ�ꍇ�ɁA

���ɂǂ̃u���b�N��ǂ߂΂�������������悤�ɂȂ��Ă��܂��B

�u�����`�u���b�N�̓L�[�l���X�ɍׂ����������ĊǗ����Ă��܂��B�L�[�l������

�ꍇ�̓u�����`�u���b�N�������A�Ȃ�܂��B

���[�t�u���b�N�͍ʼn��w�̃u���b�N�ŃL�[�l�ƃe�[�u���̍s�̕����I�Ȉʒu��

�Ǘ����Ă��܂��B���A���[�t�u���b�N�ɂ͑O��̃��[�t�u���b�N�ւ̃|�C���^��

�܂܂�Ă���A<�A>�ABETWEEN�Ȃǂ͈̔͌������X���[�Y�ɍs���܂��B

�}�̃C���f�b�N�X���g���āuTSUMIKI�v����������ꍇ�A���̂悤�Ȍo�H�Ŏ��ۂ̍s�ւ�

�A�N�Z�X���s���܂��B



�� B-Tree�C���f�b�N�X�̓���

B-Tree�C���f�b�N�X�͂��̍\�����玟�̂悤�ȓ����������Ă��܂��B

�E�ǂ̂悤�ȃL�[�l�ł��A����̑��x�����҂ł���B
�@(����͑S�Ẵ��[�t�u���b�N�������[���ɂȂ��Ă��邽�߂ł��B)

�E��ʂ̃f�[�^�ł��ǂ��p�t�H�[�}���X�����҂ł���B
�@(����͑�ʂ̃f�[�^���i�[�����ꍇ�ł��A�C���f�b�N�X�̐[����4�u���b�N�ȓ���
�@���܂邱�Ƃ��������߂ł��B���A�w�b�_��u�����`�����̓�������Ƀ��[�h�����
�@���邱�Ƃ������A���ۂɂ�1,2�u���b�N�̓ǂݍ��݂ōςނ��Ƃ��琄������܂��B)

�E��v����(=�ɂ�錟��)�����łȂ��A�͈͌���(<,>,BETWEEN�ɂ�錟��)���s�����Ƃ�
�@�ł���B(����̓��[�t�u���b�N�ɑO��̃��[�t�u���b�N�ւ̃|�C���^��
�@�܂܂�Ă���A�O��̃f�[�^��A�����ď������邱�Ƃ��o���邽�߂ł��B)

�E�\�[�g�����������ɍs�����Ƃ��o����B
�@(����̓C���f�b�N�X���̊e�f�[�^�����Ƀ\�[�g����Ċi�[����Ă��邽�߂ł��B)


�� B-Tree�C���f�b�N�X�g�p���̃I�[�o�[�w�b�h

B-Tree�C���f�b�N�X�͏_��Ō����I�Ȍ������T�|�[�g���Ă���܂��B

���������̈���ŁA�f�[�^���X�V����Ƃ��ɂ́A���̍\�����ێ����邽�߂�

�I�[�o�[�w�b�h���������܂��B

�C���f�b�N�X�������ݒ肳��Ă���ƁA�X�V�����ɕK�v�Ȏ��Ԃ����{�ɂȂ邱�Ƃ�

����܂��B

�C���f�b�N�X���쐬����ꍇ�ɂ́A�X�V�n�����ƌ����n�����̃o�����X���l���Ȃ���

��Ƃ��邱�Ƃ��K�v�ɂȂ�܂��B

�Ȃ��A��r�I�傫�ȕ\�ł͍X�V�n�������������n�����̕������ׂ��������߁A

��ʓI�ɂ̓C���f�b�N�X���쐬���������A�g�[�^���p�t�H�[�}���X�͌��シ��

�”\���������悤�ł��B

�܂��A���R�Ȃ���C���f�b�N�X���쐬����ɂ́A���̂��߂̃f�B�X�N�e�ʂ��K�v��

�Ȃ�܂��B�X�̃C���f�b�N�X�̗e�ʂ͕\�ɔ�ׂ�Ώ��������̂ł����A�ЂƂ‚�

�\�ɕ����̃C���f�b�N�X���쐬�����ꍇ�ɂ́A�\�ƃC���f�b�N�X�����v�����e�ʂ�

���̕\��2�{�ȏ�ɂȂ邱�Ƃ�����܂��B


�� B-Tree�C���f�b�N�X���L���ɓ��삷��f�[�^�擾��

B-Tree�C���f�b�N�X���L���ɓ��삷��̂́A�擾����f�[�^�̗ʂ��\�S�̂�

5%�`15%�ȉ��̏ꍇ�ł��B��T�ɂ͌����܂��񂪁A����ȏ�̃f�[�^���擾����

�ꍇ��A��������\�̗e�ʂ��������ꍇ�́A�C���f�b�N�X���g�p���Ȃ��őS�\����

(�\�̂��ׂĂ̍s��ǂݍ����WHERE�����𔻒�)�������������ɂȂ�܂��B


�� B-Tree�C���f�b�N�X�̑I��

�d�����Ă���L�[�l�����Ȃ���ΑI�𐫂������A�C���f�b�N�X�͗L���ɓ����܂��B

���Ƃ��Βa������\����͑I�𐫂��D��Ă��܂����A���ʂ�\����͑I�𐫂�

�����ł��傤�B

�I�𐫂̗D��Ă���C���f�b�N�X�͓���̃L�[�l�őΏۂƂȂ�f�[�^��

�i�荞�߂�̂Ō����I�ɋ@�\���܂��B

���j�[�N�C���f�b�N�X��v���C�}���L�[(NULL�����‚��Ȃ����j�[�N�C���f�b�N�X)��

�ł��I�𐫂̍����C���f�b�N�X�ł��B���Ƃ��c��ȗʂ̃f�[�^�����݂���\�ł��A

�v���C�}���L�[���g�p������ӌ����ł����1�b�ȉ��̉��������҂ł��܂��B

�Ȃ��AOracle�Ȃǂ�DBMS�ł͑I�𐫂̈�����ɑ΂��Č��ʂ𔭊�����r�b�g�}�b�v

�C���f�b�N�X�Ƃ����C���f�b�N�X���T�|�[�g����Ă��܂��B


�� �����C���f�b�N�X

�����C���f�b�N�X�Ƃ́A�����̗�ō\�������C���f�b�N�X�̂��Ƃł��B

WHERE��ł悭�����̗񂪎w�肳���ꍇ�́A�����̗�ɑ΂��ăC���f�b�N�X��

�쐬����Ƃ����ʓI�Ȍ������”\�ɂȂ�܂��B

���Ƃ��΁A

SELECT
�@�@first_name,second_name
FROM
�@�@tsumiki_mst
WHERE
�@�@first_name='�l' AND
�@�@second_name='�l'

�̂悤��SQL�������s����ꍇ�́A

���̂悤�ȃC���f�b�N�X���쐬����ƌ����������ɂȂ�܂��B

CREATE INDEX tsumiki_mst_name_idx
�@�@ON tsumiki_mst(first_name,second_name)

���̃C���f�b�N�X��first_name��P�ƂŎw�肵���Ƃ��ɂ��@�\����̂ŁA

first_name�̃C���f�b�N�X�̑���Ɏg�����Ƃ��ł��܂��B

�������Asecond_name��P�ƂŎw�肵���ꍇ�ɂ͋@�\���܂���B

����́A�����C���f�b�N�X�͍ŏ��̗񂩂�A�����ė񂪎w�肳��Ă���ꍇ�ɂ̂�

�@�\����Ƃ������������邩��ł��B

���Ƃ��΁AA,B,C�̏����ŃC���f�b�N�X���w�肳��Ă���ꍇ�A�L��/�����͎���

�悤�ɂȂ�܂��B

�����w��� �L��/����
A ��
B �~
C �~
AB ��
AC �~
BC �~

�����C���f�b�N�X���g���ꍇ�͎��̃K�C�h���C���ɏ]���ė�⏇�������肷���

�ǂ��ł��傤�B

�EWHERE��ł悭�ꏏ�Ɏg�������C���f�b�N�X�Ɏw�肷��B

�EWHERE��ɒP�ƂŎg���邱�Ƃ������́A�C���f�b�N�X�̍ŏ��̗�Ɏw�肷��B

�E�I�𐫂̗D��Ă���񂩂珇�Ɏw�肷��B

�Ȃ��A����Ɍ������������������ꍇ�́A�I�������(SELECT��̌�Ɏw�肳����)

�������C���f�b�N�X�Ɋ܂߂Ă��܂��΂悢�ł��傤�B

���̏ꍇ�A�C���f�b�N�X�Ώۂ̃e�[�u���ɃA�N�Z�X����K�v�������Ȃ�̂ŁA

�C���f�b�N�X�ɑ΂���A�N�Z�X�݂̂̍X�ɍ����Ȍ��������҂ł��܂��B


�� �C���f�b�N�X�}�[�W

WHERE��ɕ����̗񂪎w�肳��Ă��āA������ɑ΂��Č����C���f�b�N�X��

�Ȃ�����ǂ���̌X�ɑ΂��ăC���f�b�N�X���쐬����Ă���ꍇ�A

�C���f�b�N�X�}�[�W�Ƃ����������s���邱�Ƃ�����܂��B

�C���f�b�N�X�}�[�W�Ƃ͂��ꂼ��̃C���f�b�N�X����l����v���邷�ׂĂ̍s��

�擾���āA�ŏI�I�ɂǂ̌��ʂɂ��܂܂��s�𒊏o����Ƃ��������ł��B

�C���f�b�N�X�}�[�W�́A�����̃C���f�b�N�X��ǂݍ��ނ��߁A�����C���f�b�N�X

�ɔ�ׂ�ƌ������ǂ�����܂���B���ADBMS�ɂ���Ă̓C���f�b�N�X�}�[�W

���̂��̂��@�\���Ȃ��ꍇ������܂��B

�C���f�b�N�X�}�[�W�ɂ���ď\���ȃ��X�|���X�������Ȃ��ꍇ��

�����C���f�b�N�X�̍쐬���������������ǂ��ł��傤�B


�� NULL�l

NULL�l�̓C���f�b�N�X�Ɋ܂܂�܂���B���A�����C���f�b�N�X�̏ꍇ�́A

�S�Ă̗�NULL�l�Ȃ�C���f�b�N�X�Ɋ܂܂�܂���B

WHERE���IS NULL�������w�肳�ꂽ�ꍇ�A�C���f�b�N�X�͎g�p���ꂸ��

�e�[�u���S�������s���܂��B

�c��ȗʂ̃f�[�^���i�[����Ă���e�[�u���̌����ł́ANULL�l�̈����ɂ�

�C���‚��Ȃ���΂Ȃ�܂���B

NULL�l�̌����ɂ���ď\���Ȍ��ʂ������Ȃ��ꍇ�́ANULL�l�̕ς���

�f�t�H���g�l��ݒ肵�Ă��̖���������邱�Ƃ��ł��܂��B


�� !=(Not Equals)�̎g�p

!=����<>���g�p�����ꍇ�A�e�[�u���̑S�������s���邱�Ƃ�����܂��B

����͂��ׂĂ̍s���炠��l�Ɉ�v����s�������Ƃ��ɁA�����Ă��̏ꍇ�A

�e�[�u���̑S����������������������ł��B

!=�̎g�p�ŏ\���Ȍ��ʂ������Ȃ��ꍇ�AIN��OR�ŏ�����u�������邱�Ƃ�

����ăe�[�u���̑S������������邱�Ƃ��K�v�ɂȂ�܂��B


�� ��ɑ΂���֐��≉�Z�q�̎g�p

WHERE��ŗ�ɑ΂��Ċ֐��≉�Z�q���g����ƃC���f�b�N�X��

���p�ł��Ȃ��Ȃ�܂��B

���Ƃ��΁A

SELECT
�@�@*
FROM
�@�@tsumiki_sales
WHERE
�@�@val * 2 > 2000

�̂悤��SQL���ł�val�ɐݒ肳��Ă���C���f�b�N�X�͎g�p����܂���B

�֐��≉�Z�q�̎g�p�ŏ\���Ȍ��ʂ������Ȃ��ꍇ�A����ƈӖ��I�ɓ�����

SQL���ɒu���������Ȃ�����������K�v������܂��B

��L��SQL�͎��̂悤�ɂ���ƃC���f�b�N�X���g�p�����悤�ɂȂ�܂��B

SELECT
�@�@*
FROM
�@�@tsumiki_sales
WHERE
�@�@val > 2000 / 2

�Ȃ��ADBMS�ɂ���ẮA���̖���������邽�߂Ɋ֐��C���f�b�N�X�Ƃ���

�C���f�b�N�X���T�|�[�g����Ă���ꍇ������܂��B


�� LIKE��̎g�p

���C���h�J�[�h���g������v������LIKE����g�����Ƃ��ł��܂����A

���C���h�J�[�h�Ŏn�܂�LIKE�������s���ꍇ�A�C���f�b�N�X���g�p���邱�Ƃ�

�ł��܂���B

�����B-Tree�C���f�b�N�X�̍\����̌��E�ł��B


�� �\�[�g�̎g�p

ORDER BY��ɃC���f�b�N�X������ꍇ�A�C���f�b�N�X���Ŋ��Ƀf�[�^���\�[�g

����Ă��邽�߁A�����\�[�g�������s���܂���B���̂��߁A���ɍ�����

���X�|���X�����҂ł��܂��B

�������AORDER BY��̗��NOT NULL�ł���K�v������܂��B

�����I�Ƀ\�[�g���s���ꍇORDER BY����w�肵�܂����ADISTINCT����w�肷��ƁA

�d�������s�����O���邽�߂�DBMS�����Ŏ����I�Ƀ\�[�g�������s���܂��B

����I��DISTINCT����g�p���Ă���ꍇ�́A�ɗ�DISTINCT����g�p���Ȃ�����

�p�t�H�[�}���X�̂��߂ɂ͍D�܂����ł��傤�B

�܂��AUNION���Z�������Ȃ��ꍇ�ɂ�DISTINCT�Ɠ��l�ɁA�d������s�����O���邽��

�\�[�g���s���܂��B�d������s�����O����K�v���Ȃ��ꍇ��UNION ALL���g����

�����D�܂����Ƃ����܂��B


�� �O���[�s���O�̎g�p

GROUP BY����g�p����SQL��������������ɂ�GROUP BY��ƑI�����X�g�̑S�Ă̗��

�܂񂾌����C���f�b�N�X���쐬����K�v������܂��B

���Ƃ��΁A

SELECT
�@�@place_id,sum(val)
FROM
�@�@tsumiki_sales
GROUP BY
�@�@place_id

�̂悤��SQL���ł͎��̂悤�ȃC���f�b�N�X���쐬���邱�Ƃɂ���ď����������ɂȂ�

�”\��������܂��B

CREATE INDEX tsumiki_sales_grp_idx
�@�@ON tsumiki_sales(place_id,val)

����́ASQL���s���ɃC���f�b�N�X�Ώۂ̃e�[�u���ɃA�N�Z�X����K�v���Ȃ��Ȃ�

���߂ł��B���їp�e�[�u���ȂǍX�V�n�����ł̃I�[�o�[�w�b�h���C�ɂ��Ȃ��ł���

�e�[�u���Ȃǂł͌����I�Ƃ����܂��B

�Ȃ��AHAVING��̓O���[�s���O�̏������I��������ɓK������܂��B

�O���[�s���O�̏����͍����ȏ����ł��̂ŁAHAVING���g�킸�ɂ��ޏ�����

�o���邾��WHERE��ɋL�q���ăO���[�s���O�̑Ώی��������炷�悤�ɂ����

���X�|���X�����シ��ł��傤�B