Как организовать выборку ключа по условию больше или равно в BerkeleyDB |
[исправить] |
Задача: выбрать запись с ключем большим или равным искомому, т.е. организовать
выборку по промежутку значений:
#!/usr/bin/perl
use strict;
use BerkeleyDB;
use constant DB_DEF_CACHE_SIZE => 5000000;
my %hash;
my $dbobj = tie(%hash, 'BerkeleyDB::Btree',
-Filename => "test.db",
-Cachesize => DB_DEF_CACHE_SIZE,
-Flags => DB_CREATE,
-Compare => sub { $_[0] <=> $_[1] }
) or die "Can't create or open DB File!\n";
# Тестовые значения
$hash{5}="0-5";
$hash{8}="6-8";
$hash{20}="9-20";
$hash{80}="21-80";
my ($key, $val);
my $cursor = $dbobj->db_cursor();
# Выборка.
$key=3;
$cursor->c_get($key, $val, DB_SET_RANGE);
print "3=$val\n";
$key=25;
$cursor->c_get($key, $val, DB_SET_RANGE);
print "25=$val\n";
$key=80;
$cursor->c_get($key, $val, DB_SET_RANGE);
print "80=$val\n";
untie %hash;
|
|
|
24.09.2004
|
Раздел: Корень / Программисту и web-разработчику / SQL и базы данных / PostgreSQL специфика / Оптимизация и администрирование PostgreSQL |