Поиск в базе данных
От: vit_as Россия  
Дата: 24.02.07 10:43
Оценка:
Написал приложение которое сканирует расшаренные папки в сети и записывает их в базу данных. База расположена на MS SQL Server и имеет 2 таблицы (одна для файлов, вторая для папок). Файл с базой весит около 2Гб...
Делаю веб страницу (ASP.NET) для поиска. Выполняю запрос типа SELECT * FROM files WHERE filename LIKE '% some string %' проблема состоит в том, что данный запрос выполняется около 4х минут... Вопрос: Как ускорить поиск по базе? Будет ли ускорена работа, если таблицу ,где хранятся файлы, разбить на таблицы, в которых, например, около 300 тыс записей (а не 4 миллиона). И поиск вести уже в каждой таблице, а результат складывать?
Re: Поиск в базе данных
От: Lloyd Россия  
Дата: 24.02.07 10:49
Оценка: +1
Здравствуйте, vit_as, Вы писали:

_>Написал приложение которое сканирует расшаренные папки в сети и записывает их в базу данных. База расположена на MS SQL Server и имеет 2 таблицы (одна для файлов, вторая для папок). Файл с базой весит около 2Гб...

_>Делаю веб страницу (ASP.NET) для поиска. Выполняю запрос типа SELECT * FROM files WHERE filename LIKE '% some string %' проблема состоит в том, что данный запрос выполняется около 4х минут... Вопрос: Как ускорить поиск по базе? Будет ли ускорена работа, если таблицу ,где хранятся файлы, разбить на таблицы, в которых, например, около 300 тыс записей (а не 4 миллиона). И поиск вести уже в каждой таблице, а результат складывать?

Нет, скорее всего не будет. Мосмотри BOL не предмет Full-Text Search.
Re[2]: Поиск в базе данных
От: vit_as Россия  
Дата: 24.02.07 11:07
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, vit_as, Вы писали:


_>>Написал приложение которое сканирует расшаренные папки в сети и записывает их в базу данных. База расположена на MS SQL Server и имеет 2 таблицы (одна для файлов, вторая для папок). Файл с базой весит около 2Гб...

_>>Делаю веб страницу (ASP.NET) для поиска. Выполняю запрос типа SELECT * FROM files WHERE filename LIKE '% some string %' проблема состоит в том, что данный запрос выполняется около 4х минут... Вопрос: Как ускорить поиск по базе? Будет ли ускорена работа, если таблицу ,где хранятся файлы, разбить на таблицы, в которых, например, около 300 тыс записей (а не 4 миллиона). И поиск вести уже в каждой таблице, а результат складывать?

L>Нет, скорее всего не будет. Мосмотри BOL не предмет Full-Text Search.


Расшифруйте, пожалуйста... Как это?
Re[3]: Поиск в базе данных
От: Lloyd Россия  
Дата: 24.02.07 11:10
Оценка:
Здравствуйте, vit_as, Вы писали:

L>>Нет, скорее всего не будет. Мосмотри BOL не предмет Full-Text Search.


_>Расшифруйте, пожалуйста... Как это?


BOL = Books OnLine = документация по ms sql.
Re: Поиск в базе данных
От: Аноним  
Дата: 26.02.07 10:04
Оценка:
Здравствуйте, vit_as, Вы писали:

_>Написал приложение которое сканирует расшаренные папки в сети и записывает их в базу данных. База расположена на MS SQL Server и имеет 2 таблицы (одна для файлов, вторая для папок). Файл с базой весит около 2Гб...


А индексы не пробовал создать?
Re[2]: Поиск в базе данных
От: b00t  
Дата: 26.02.07 10:07
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, vit_as, Вы писали:


_>>Написал приложение которое сканирует расшаренные папки в сети и записывает их в базу данных. База расположена на MS SQL Server и имеет 2 таблицы (одна для файлов, вторая для папок). Файл с базой весит около 2Гб...


А>А индексы не пробовал создать?


Это моё сообщение, пардон.
Re[2]: Поиск в базе данных
От: Lloyd Россия  
Дата: 26.02.07 10:25
Оценка:
Здравствуйте, <Аноним>, Вы писали:

_>>Написал приложение которое сканирует расшаренные папки в сети и записывает их в базу данных. База расположена на MS SQL Server и имеет 2 таблицы (одна для файлов, вторая для папок). Файл с базой весит около 2Гб...


А>А индексы не пробовал создать?


Какие индексы, если запрос LIKE '% some string %'?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Поиск в базе данных
От: vit_as Россия  
Дата: 26.02.07 11:49
Оценка: :)
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, <Аноним>, Вы писали:


_>>>Написал приложение которое сканирует расшаренные папки в сети и записывает их в базу данных. База расположена на MS SQL Server и имеет 2 таблицы (одна для файлов, вторая для папок). Файл с базой весит около 2Гб...


А>>А индексы не пробовал создать?


L>Какие индексы, если запрос LIKE '% some string %'?


Чтобы можно было использовать запрос типа SELECT * FROM LanDir WHERE MATCH (dirname) AGAINST ('%" + str + "%') нуже Full-Text Search. В MS SQL Server который идет с Visual Studio 2005 по умолчанию его нет. Где его взять?

Кстати, когда поменял типы полей с char(256) на varchar(256) запрос SELECT * FROM files WHERE filename LIKE '% some string %' стал выполняться вместо 4 минут — 40 секунд...
Re[3]: Поиск в базе данных
От: b00t  
Дата: 27.02.07 07:02
Оценка:
Здравствуйте, Lloyd, Вы писали:

А>>А индексы не пробовал создать?

L>Какие индексы, если запрос LIKE '% some string %'?

Извиняюсь, ответил не прочитав до конца вопрос =)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.