Добрый день!
Есть у меня в 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
Доброго времени суток!
Подскажите пожалуйста, можно ли в теле триггерной функции на plpgsql извлечь тип поля NEW.field_name, и если это возможно, то сравнить с типом формального параметра?
Здравствуйте!
Подскажи пожалуйста.
Предположим есть таблица
Tabl
--------------------------------------
Поле1 | Поле2 | Поле3 |
--------------------------------------
integer | tinterval | tinterval |
Я хочу написать тригерную функцию которая бы автоматически умножала Поле1*Поле2, а результат записывала в Поле3. Чтобы оператор при внесении данных в Поле1 и Поле2 не занимался умножением для Поле3 и не мог ошибиться.

Добрый день, коллеги.
Было: мастер и два слейва (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? Заранее спасибо. Сори за нубство
Здравствуйте!
Имеется триггерная функция с запросом:
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.