Индекс ХЕША PostgreSQL

Ошибка анализа: синтаксическая ошибка, неожиданная '['

Эта ошибка возникает в двух вариантах:

Вариант 1

$arr = [1, 2, 3];

Синтаксис инициализатора этого массива был введен только в PHP 5.4; это приведет к возникновению ошибки парсера в версиях до этого. Если возможно, обновите свою установку или используйте старый синтаксис:

$arr = array(1, 2, 3);

См. Также этот пример из руководства.

Вариант 2

$suffix = explode(',', 'foo,bar')[1];

Результаты функции разыменования массива также были введены в PHP 5.4. Если обновление невозможно, вам нужно использовать временную переменную:

$parts = explode(',', 'foo,bar');
$suffix = $parts[1];

См. Также этот пример из руководства.

28
задан Madara Uchiha 5 April 2012 в 17:14
поделиться

2 ответа

Хеши быстрее, чем B-деревья для случаев, где у Вас есть известное значение ключа, особенно известное уникальное значение.

Хеши должны использоваться, если рассматриваемый столбец никогда , намеревался быть просканированным сравнительно с < или > команды.

Хеши O(1) сложность, B-деревья O(log n) сложность (iirc), следовательно, для больших таблиц с уникальными записями, выбирая ITEM="foo", они будут самым эффективным способом искать его.

Это особенно практично, когда эти уникальные поля используются на условии объединения.

34
ответ дан musically_ut 28 November 2019 в 03:20
поделиться

Я не пробовал этого, но рассматриваю этот подход, чтобы использовать хеш-индексы для временных журнальных таблиц.

Насколько я понимаю, они строятся быстрее, занимают меньше места и запрос немного быстрее, чем b-дерево.

Согласно этому тесту хеш-индексы немного быстрее и несколько меньше, чем индексы BTree. Однако вы не можете сделать с ними уникальный хэш-индекс - кроме того, они не зарегистрированы в WAL.

2
ответ дан Uli Köhler 28 November 2019 в 03:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: