powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Новости для web-сервера в Interbase
5 сообщений из 5, страница 1 из 1
Новости для web-сервера в Interbase
    #32233688
Serge N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пишу на Delphi ISAPI-скрипт для сайта под IIS
Хочу хранить ленту новостей в Interbase в поле varchar(4000)
Каждое сообщение хранится в виде html-текста в этом поле
Использую Interbase 5.6
Показываю по 10 новостей на странице
Для их выборки написал хранимую процедуру, которая возвращает по 10 записей с нужным смещением и возможностью поиска по подстроке.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
CREATE PROCEDURE NEWS_PAGE (
  FIRSTROW INTEGER, 
  NUMROWS INTEGER,
  MAN VARCHAR( 100 )
) RETURNS (
  NEWS_ID INTEGER,
  NEWS_DATE TIMESTAMP,
  TITLE_ VARCHAR( 200 ),
  TEXT_ VARCHAR( 4000 ),
) AS    

DECLARE VARIABLE i  INTEGER;

begin
  i= 0 ;
  FOR
    SELECT NEWS_ID,NEWS_DATE,TITLE_,TEXT_
    FROM NEWS
    WHERE ((:MAN IS NULL) OR ( TITLE_ || TEXT_ like '%' || :MAN || '%'))
    ORDER BY NEWS_ID DESC
    INTO :NEWS_ID,:NEWS_DATE,:TITLE_,:TEXT_
  DO
  begin
    i=i+ 1 ;
    if (i-FIRSTROW>=NUMROWS) then EXIT;
    if (i>=FIRSTROW) then SUSPEND;
  end
end



Но я заметил, что при количестве записей где-то за тысячу, выборка начинает притормаживать. Насколько я понимаю тысяча записей - это не объем для sql-сервера.
Что я делаю не правильно? Может есть какие-то стандартные методы изготовления таких лент новостей? Как сделать, чтобы работало быстро?
...
Рейтинг: 0 / 0
Новости для web-сервера в Interbase
    #32233718
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что это за конструкция такая ?

Код: plaintext
1.
WHERE ((:MAN IS NULL) OR ( TITLE_ || TEXT_ like '%' || :MAN || '%'))
...
Рейтинг: 0 / 0
Новости для web-сервера в Interbase
    #32233738
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понимаешь ты верно, вот только чувствую индексов у тя нет и наврятли они смогут работать...
like вообще не работает с индексами, а конструкция "TITLE_ || TEXT_ " тем более
если тебе хочется полнотекстовый поиск, то в IB я такого не встречал. Хотя поищи на всякий случай, может и найдешь. Полнотекстовй работает по индексу, именно поэтому не загибается скажем яндекс
...
Рейтинг: 0 / 0
Новости для web-сервера в Interbase
    #32233942
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К тому же
WHERE ((:MAN IS NULL) OR ( TITLE_ || TEXT_ like '%' || :MAN || '%'))

OR означает двойной проход по данным
сначала (:MAN IS NULL)
затем ( TITLE_ || TEXT_ like '%' || :MAN || '%')
...
Рейтинг: 0 / 0
Новости для web-сервера в Interbase
    #32240141
Serge N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То, что я делаю не правильно, я понимаю.
Но КАК сделать правильно? Чтобы работало быстро и с возможностью поиска по тексту новости?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Новости для web-сервера в Interbase
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]