Проблемы с поиском по БД, требуется помощь ;-(
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Проблемы с поиском по БД, требуется помощь... Expand / Collapse
Автор
Сообщение
09.01.2002 16:46
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421, Visits: 49 251
Начал замечать, что иногда появляются проблемы с поиском по БД на данном сайте, особенно когда выбираешь поиск по БД, SQL Server возвращает таймаут при выполнении запроса... Обычно все вроде бы работает, но иногда, видимо, когда сервер провайдера перегружен или еще что, выдает этот таймаут. Запрос уже обсуждался на этом форуме

http://www.relib.com/forums/topic.asp?id=736362

решение мне понравилось и его и включили в скрипт поиска...

Таблица такая:

CREATE TABLE forum (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[member] [int] NOT NULL ,
[topic] [nvarchar] (100) COLLATE Cyrillic_General_CI_AS NULL ,
[date] [smalldatetime] NULL ,
[parentID] [int] NOT NULL ,
[message] [ntext] COLLATE Cyrillic_General_CI_AS NOT NULL ,
[updated] [smalldatetime] NULL ,
[type] [int] NOT NULL ,
[ip] [nvarchar] (50) COLLATE Cyrillic_General_CI_AS NULL ,
[status] [char] (1) COLLATE Cyrillic_General_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

к ней сделаны primary key на ID asc (clustered)
и индекс по topic,updated,status - все asc

Запрос выполняется примерно следующий

SELECT DISTINCT t1.id, t1.topic, substring(t1.message,1,200), t1.updated, m.name
FROM member m, forum T1 Inner Join forum T2 On T1.Id = T2.ParentId
WHERE T1.ParentId = 0 AND (
(t1.topic like '%xxx%' OR t1.message like '%xxx%')
) AND m.id=t1.member ORDER BY t1.updated DESC

Заранее благодарю.
Сообщ. #738744
09.01.2002 18:24
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421, Visits: 49 251
а еще после 5-7 "удачных" запросов только что получил следующий ответ от сервера:

Microsoft OLE DB Provider for SQL Server error '80004005'

Transaction (Process ID 101) was deadlocked on {lock} resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

???
Сообщ. #738762
09.01.2002 18:55
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 13.02.2002 12:46
Сообщ.: 266, Visits: 2 927
Попробуйте так

SELECT DISTINCT t1.id, t1.topic, substring(t1.message,1,200), t1.updated, m.name
FROM member m, forum T1 WITH (NOLOCK) Inner Join forum T2 WITH (NOLOCK) On T1.Id = T2.ParentId
WHERE T1.ParentId = 0 AND (
(t1.topic like '%xxx%' OR t1.message like '%xxx%')
) AND m.id=t1.member ORDER BY t1.updated DES
Сообщ. #738769
09.01.2002 19:02
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421, Visits: 49 251
изменил. вроде работает. пока :-)

спасибо за ответ
Сообщ. #738770
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl, Alexey Spirin

Время GMT +3:00, Сейчас 8:17