Вопросы по SQL и другие аспекты работы PostgreSQL

warning: Creating default object from empty value in /var/www/victor/web/pgdocs.ru/data/modules/taxonomy/taxonomy.pages.inc on line 33.
Здесь обсуждаются запросы на SQL в PostgreSQL. Оптимизация запросов, реализация, подходы и т.д.

VIEW

Добрый день!

Есть у меня в Postgresql такие запросы с такой скосротью выполнения:
select * from vw_users where id = 10 and year = 2010 - выполняется очень быстро, доли секунды
select * from messages where from_user_id = 10 and year = 2010 - тоже оч быстро
select * from messages LEFT JOIN users a ON messages.from_user_id = a.id WHERE year = 2010 - тоже оч быстро

Но вот если я делаю LEFT JOIN с VIEW vw_users,то запрос выполняется 15 секунд на совершенно не больших таблицах в несколько тысяч записей.

Индексы в полнотекстовом поиске

Здравствуйте учасники форума.
Отдельное спасибо владельцам и активным учасникам, очень хороший сайт и хорошо выложена информация.

А теперь к самому вопросу.
Я занялся написанием базы для полнотексного поиска.
В итоге. База создана. Таблицы созданы. Данные загнал в таблицы. Все хорошо.

Создал индекс командой "CREATE INDEX text_idx ON inform USING gin (to_tsvector('russian', text));"
Если индекс не создать, вообще не будет работать полнотексный поиск.
В итоге все очень хорошо работает, текст ищет очень быстро среди 1 миллиона записей в таблице.
Вот вроде бы и счастье наступило.

Сделать автоинкремент на группу данных

У меня есть таблица с временной меткой и значениями. Хотелось бы ввести автоподсчет событий в отдельном столбце по времени, например так: с 18 первого дня до 16 другого дня - это 1, с 16 второго дня до 18 следующего дня - 2 и далее. Как это можно сделать?

Функции

Доброго времени суток.
Как можно сделать что бы запрос к примеру :

update test1 set sum=sum - 250
where data='now()';

выполнялся раз в сутки в определённое время. Что нужно создать и с какими параметрами??

P.S. ток изучаю sql

gettype или typeof в функции plpgsql

Доброго времени суток!

Подскажите пожалуйста, можно ли в теле триггерной функции на plpgsql извлечь тип поля NEW.field_name, и если это возможно, то сравнить с типом формального параметра?

Операции с переменными времени на PL/SQL. Как?

Здравствуйте!
Подскажи пожалуйста.

Предположим есть таблица
Tabl
--------------------------------------
Поле1 | Поле2 | Поле3 |
--------------------------------------
integer | tinterval | tinterval |

Я хочу написать тригерную функцию которая бы автоматически умножала Поле1*Поле2, а результат записывала в Поле3. Чтобы оператор при внесении данных в Поле1 и Поле2 не занимался умножением для Поле3 и не мог ошибиться.

Развалилась streaming_replication

Изображение Maxim Filatov

Добрый день, коллеги.

Было: мастер и два слейва (streaming replication, PostgreSQL 9.0.4)

Мастер умер насильственной смертью.
Один из слейвов был сделан мастером.
Натравляю на него второй слейв, в логах постоянно повторяется:

22708 2011-10-14 18:56:28 MSDFATAL:  timeline 2 of the PRIMARY does NOT match recovery target timeline 1
11807 2011-10-14 18:56:31 MSDLOG:  restored log file "000000010000001900000005" FROM archive
11807 2011-10-14 18:56:31 MSDLOG:  invalid record length at 19/547D280

Гугл молчит, как рыба об лед.

Any ideas?

Запросы

С помощью какого запроса можно изменить строку? к примеру в mysql это
UPDATE user SET username= 'GrandMaster' WHERE id = 1

А в pgsql? Заранее спасибо. Сори за нубство

EXECUTE. В чём загвоздка?

Здравствуйте!
Имеется триггерная функция с запросом:

			INSERT INTO table01 (id, t, long_val, double_val, string_val) VALUES (
				NEW.id,
				NEW.t,
				NEW.long_val,
				NEW.double_val,
				NEW.string_val);

Особенность тут такая. Поля long_val, double_val, string_val могут быть null (все или не все).
Собственно всё работает даже так:
INSERT INTO table01 VALUES (NEW.*);

Но появилась нужда определять имя таблицы, в которую вставлять данные в данный момент.
Поэтому пришлось делать запрос так:

Проверка прав

Добрый день!

Как можно проверить, есть ли возможность у
пользователя выполнить вставку/редактирование в таблице
без физической вставки или даже попытки вставки тестовых значений?

Все это относительно прав заданных в GRANT/REVOKE.

Собранный материал

Back to top

(С) Виктор Вислобоков, 2008-2023