PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 11. ���� | Fast Forward | Next |
����������partial index�� �ǽ�����һ������Ӽ��ϵ������� ���Ӽ�����һ���������ʽ����ģ���������������ν������ ������ֻ����������Щ�������ν�ʵ��С�
������������Ҫ������Ϊ�˱������ͨ��ֵ���������� ��Ϊ���һ����һ����ͨ��ֵ������ռ���������г��������ٷֵ����ֵ���ϵIJ�ѯ����ʹ�������� ��ô��û���������б�����Щ����ͨ���еı�Ҫ�� �����Ϳ��Լ�С�����ijߴ磬�����Ϳ��������Щ����ʹ�������IJ�ѯ���ٶȡ� ͬʱ��Ҳ�����������²������ٶȣ���Ϊ���������������Ҫ���������� Example 11-1 ��ʾ��һ��DZ�ڵ��ⷽ��Ӧ�õ����ӡ�
Example 11-1. ����һ�������������ų���ͨ��ֵ
��������һ�����ݿ��д洢 web �������ķ�����־�� ����������Ǵ������֯�ڲ��� IP ��ַ��Χ����ģ� ��Ҳ��һС�������������ط���������Щͨ�����Ž������ӵĹ�Ա���� �������������Ҫ�������ⲿ���ʵ� IP����ô����ܾͲ���Ҫ����Щ��Ӧ�����֯�������� IP ��Χ����������
�����������������
CREATE TABLE access_log ( url varchar, client_ip inet, ... );
Ҫ�����������ǵ����ӵ�������ʹ�������������������
CREATE INDEX access_log_client_ip_ix ON access_log (client_ip) WHERE NOT (client_ip > inet '192.168.100.0' AND client_ip < inet '192.168.100.255');
һ������ʹ����������ĵ��͵IJ�ѯ��������
SELECT * FROM access_log WHERE url = '/index.html' AND client_ip = inet '212.78.10.32';
һ������ʹ����������IJ�ѯ�����ǡ�
SELECT * FROM access_log WHERE client_ip = inet '192.168.100.23';
����ͨ���۲���Կ������������͵IJ�������Ҫ����ͨ��ֵ�ǿ���Ԥ�Ƶġ� �����ֵ�ķֲ��ǹ��еģ�����Ӧ����������ʣ������Ǿ�̬�ģ�����ʱ����ı䣩�� ��������һ�㣨������ͨ��ֵ���������ѣ����������ͨ��ֵֻ����Ϊһ�µ�����װ�أ� ��ô�����ܾ�Ҫ���ܶ�ά���Թ�����
����һ�������ǰ���Щ���͵IJ�ѯ����������Ȥ����ֵ�ų��� ����֮�⣻��������� Example 11-2 ����ʾ�� ���������������г���ͬ�����ŵ㣬��������ȫ�ܾ���ͨ������ ����"������Ȥ"����ֵ����ʹ����ɨ����ܶ���Щ���� Ҳ��������Ȼ��Ϊ����������ò���������Ҫ�dz���ϸ�Լ���Ҫ�������顣
Example 11-2. ����һ�������������ų�������Ȥ����ֵ
�������һ���������Ѹ����δ����Ķ�������δ����Ķ���ֻռ�ܱ��һС���ֲ������Ǿ���ʹ�õIJ��֣� ��ô�����ͨ��ֻ��δ������ϴ���һ���������������ܡ����������������������������
CREATE INDEX orders_unbilled_index ON orders (order_nr) WHERE billed is not true;
�����õ���������IJ�ѯ��������
SELECT * FROM orders WHERE billed is not true AND order_nr < 10000;
������������Ҳ����������Щ��ȫ���漰 order_nr �IJ�ѯ�����磬
SELECT * FROM orders WHERE billed is not true AND amount > 5000.00;
�����ѯ������ amount �ֶ��ϵIJ���������ô��Ч�� ��Ϊϵͳ����ɨ���������������ǣ����δ����Ķ�����Խ��٣� ��ô��������������ҳ�δ����Ķ����������Щ��
��ע�����������ѯ��ʹ�����������
SELECT * FROM orders WHERE order_nr = 3501;
���� 3501 �������Ѹ���Ҳ������δ���
Example 11-2 ��˵���˽����������ֶκ���ν����ʹ�õ��ֶβ������䡣 PostgreSQL ֧�ִ�����ν�ʵIJ���������ֻҪ��ֻ�漰����������ֶξ��С� ����������Ҫ��ס����ν�ʱ������Щϣ���Ӹ������л���IJ�ѯ�е�������ƥ�䡣 ȷ˵��ֻ����ϵͳ�ܹ�ʶ����ò�ѯ��WHERE��������ѧ���̺��˸�������ν��ʱ�� ������������������ڸò�ѯ�� PostgreSQL ��û�и��ӵ�����У������ʶ����Щ��ʽ��ͬ����ѧ����ȵ�ν�ʡ� ��������������У�������dz����ѣ�������ʵ��ʹ����Ҳ���ܷdz������� ϵͳ����ʶ��IJ�����̺������� "x < 1" �̺� "x < 2"�� ����ν����������ȷƥ���ѯ��WHERE������Ҫ��Ȼϵͳ����ʶ��������ǿ��õġ�
���������ĵ����ֿ�����;��ȫ��Ҫ�������ڲ�ѯ�еõ�ʹ�á� ����ĸ�������һ�����һ���Ӽ��ﴴ��һ��Ψһ������ �� Example 11-3 �������� ������ǿ��������ν�ʵ����е�Ψһ�ԣ�������Լ����Щ����ҪΨһ���С�
Example 11-3. ����һ������Ψһ����
����������һ��������������ı�����ϣ��ȷ����һ����Ŀ��Ϳ���������ֻ��һ��"�ɹ�"��¼�� ���ǿ���������������"���ɹ�"��¼��������ʵ�ַ�����
CREATE TABLE tests ( subject text, target text, success boolean, ... ); CREATE UNIQUE INDEX tests_success_constraint ON tests (subject, target) WHERE success;
���ֻ�������ɹ����Զ��кܶ�ɹ����ԣ���ô����һ�ַdz���Ч��ʵ�ַ�����
���������Ҳ�������ڸ���ϵͳѡ��IJ�ѯ�滮�� ���ܻ���������������������ݼ��ķֲ��DZȽ��ض�����״�� ��ô�ᵼ��ϵͳ�ڲ���ʹ��������ʱ��ʹ����������������£� ���ǿ�����������Ϊ��Υ��(����)�IJ�ѯ�в����á� ͨ�� PostgreSQL ��������ʹ���ǻ��������ѡ��ģ����磬���ڼ�����ͨ��ֵ��ʱ�����ʹ������ ���ǰ�������ʵ����ֻ�ǽ�Լ�������ijߴ磬������Ҫ�����������ʹ�ã��� ����������˴���Ĺ滮ѡ����ô���ύһ�����汨�档
���סһ���¡�����һ������������ʾ�����ٺͲ�ѯ�滮��֪����һ���࣬ �ر�����֪��ʲô��������������Ч�ġ�Ҫ�γ���Щֻ��Ҫ���о��鲢����� PostgreSQL �����������������ġ� �ڴ��������£�������������ͨ���������Ʋ���̫���ԡ�
�����йز�����������Ϣ������ ����������ʵ���� Partial indexing in POSTGRES: research project���� Generalized Partial Indexes ��á�