alekciy (alekciy) wrote,
alekciy
alekciy

Category:

Индексы по внешним ключам в Postgresql

Для переходящих с InnoDB под MySQL-ем не стоит забывать, что в Postgresql индексы для внешних ключей автоматически не создаются. Это вполне логично, ведь внешний ключ это условие ограничения целостности, а индекс - механизм ускорения доступа к данным (коего, к слову, в SQL стандарте нет).

Специально провел опыт на 9-ке под Debian-ом. Банальный каталог "товар-характеристики". Три таблицы. В первой 250 000 записей (товары), во-второй 10 000 (характеристики), третья линковочная (связывает товар->характеристика) содержащая 1-у запись из первой таблицы и 10-ть случайных записей из второй. Т.е. в линковочной таблице 2 500 000 записей. Если индекс по внешним ключам в линковочной таблице не строить, то запрос на получение всех характеристик одного товара (т.е. 2 JOIN + WHERE) занимает ~0,230 сек. После добавления двух индексов менее 0,001 сек. В 200 раз быстрее.
Tags: sql
Subscribe

  • Аналог PHP-шного rand() на SQL

    Вот ведь бывает, нужен генератор случайных чисел в заданном диапазоне, причем нужен не на PHP, а в СУБД. Стандартный rand(x) генерит числа в…

  • Удаление ключей в redis-е по маске

    В redis есть возможность получить список ключей по маске (команда KEYS). В результате можно узнать, есть ли у нас определенный набор ключей…

  • Неинтерактивная установка mysql на debian

    Обычно при установке mysql apt требует пароль для root-а. Таким вот скриптом можно это процесс провести в неинтерактивном режиме: #!/bin/bash…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 0 comments