Forum Webscript.Ru

Программирование => PHP => Тема начата: Zzzz от 26 Января 2003, 13:59:35

Название: Поиск по MySQL
Отправлено: Zzzz от 26 Января 2003, 13:59:35
У меня есть в MySQL таблица на 600 мегов, так вот, мне нужно сделать по ней поиск. Я написал поиск, но он при открытии таблицы грузит её всю в оперативку, а как сделать чтобы нормально искал по такому объёму?
Если нужно, то в таблице примерно 4700000 записей...
Название: Поиск по MySQL
Отправлено: Tronyx от 26 Января 2003, 14:12:11
Цитировать
У меня есть в MySQL таблица на 600 мегов, так вот, мне нужно сделать по ней поиск. Я написал поиск, но он при открытии таблицы грузит её всю в оперативку, а как сделать чтобы нормально искал по такому объёму?

Это как же ты ишешь? Достаёшь всю таблицу и по ней ПХПшными функциями... Это не правильно. Надо индексы делать...
Название: Поиск по MySQL
Отправлено: Zzzz от 26 Января 2003, 16:04:54
Tronyx
А как ?
Можно пример ?
Название: Поиск по MySQL
Отправлено: semya от 26 Января 2003, 17:46:19
а что стандартный способ формирования запроса к базе а потом обработки результата не помогает?
Название: Поиск по MySQL
Отправлено: Tronyx от 26 Января 2003, 19:23:50
Zzzz пока нет, т.к. не известно что из себя представляют эти 600 мегов, конкретизируй.
Название: Поиск по MySQL
Отправлено: nagash от 26 Января 2003, 19:39:32
надо доставать из базы только те поля которые тебе понадабятся... а не все... вобщем select * непрокатит...
потом если уж даже в этом случае очень много достаётся то можно лимитами достовать... скажем по 1000 записей... ну или сколько там в голову взбредёт...
Название: Поиск по MySQL
Отправлено: Tronyx от 26 Января 2003, 20:39:59
nagash слышишь звон, да не знаешь где он. Не думай, что ты один здесь "умный". Звездочка, не звёздочка один х.. - 600 мегов, ИМХО без индексов не обойтись, хотя черт его знает какие там у него данные.
Название: Поиск по MySQL
Отправлено: Меняздесьдавнонет от 27 Января 2003, 00:52:17
Zzzz
таблица для того и придумана, чтобы для поиска не грузить все в память.
поиск делается оператором WHERE

надо тебе найти всеш людей, имя которых Вася -
SELECT * from table where name=\'Вася\'
если нужно неполное совпадение - вместо = пишется LIKE
SELECT * from table where name LIKE \'В%\'
найдет тебе все имена, начинающиеся на В
SELECT * from table where text LIKE \'%город%\' OR text LIKE \'%деревня%\'
найдет все записи в поле text которых есть слово город или деревня
Название: Поиск по MySQL
Отправлено: nagash от 27 Января 2003, 03:49:40
Цитировать

nagash слышишь звон, да не знаешь где он. Не думай, что ты один здесь "умный".

эм... я конечно извиняюсь но откуда появилось такое предположение? я просто дал свой совет... разве нет? м...? или здесь только ты можешь советы давать? получается типа форум одного модератора... так?
обоснуй...
Название: Поиск по MySQL
Отправлено: Tronyx от 27 Января 2003, 10:20:32
Цитировать
или здесь только ты можешь советы давать? получается типа форум одного модератора... так?

Нет конечно, советуй на здоровье.

Цитировать
я конечно извиняюсь но откуда появилось такое предположение? я просто дал свой совет... разве нет? м...?

Цитировать
Звездочка, не звёздочка один х.. - 600 мегов

Просто проблема скорее всего в самом алгоритме поиска, потому что если он достаёт ВСЮ таблицу то память по любому кончится и отсутствие "*" - не спасёт, а если доставать только те строки которые нужны, то даже если стоит "*" она не чего не испортит.

PS моё замечение относится только к "звездочки", про лимит всё верно.
Название: Поиск по MySQL
Отправлено: Zzzz от 27 Января 2003, 19:28:27
В этой базе данных хранится база данных МГТС, со стандартными полями.
Так вот, мне надо производить по ней поиск в зависимости от ведённых данных. Например если я ввёл поиск по телефонному номеру, то мне нужно искать только телефонный номер, а если я ввёл адрес, то искать нужно адрес.
Название: Поиск по MySQL
Отправлено: Maniac от 27 Января 2003, 20:52:19
Так чего же ты мозги нам пудришь? Используй, как Ромик посоветовал оператор WHERE и будет тебе счастье и благоденствие. А если результатов слишком много - LIMIT спасет отца русской демократии.
[OFF]
Так и не понял - причем тут гружение таблицы в память?
[/OFF]
Название: Поиск по MySQL
Отправлено: Гаррилл от 27 Января 2003, 21:09:05
Zzzz
Цитировать
В этой базе данных хранится база данных МГТС, со стандартными полями.

А откуда, например мне, знать, что там за поля. Объясни, что там за названия и типы полей. Приведи всю структуру. Потом нормально объясни, что не получается, чего хочешь. А то ведь все обсуждают, а тебя и нет.
Если понятливый, то юзай первый ответ Ромика в этой теме.
Название: Поиск по MySQL
Отправлено: Tronyx от 27 Января 2003, 22:57:28
Цитировать
Так вот, мне надо производить по ней поиск в зависимости от ведённых данных. Например если я ввёл поиск по телефонному номеру, то мне нужно искать только телефонный номер, а если я ввёл адрес, то искать нужно адрес.

Ууууууу как всё запущено... Ты бы хоть SQL подъучил! Значит так, идика учи - http://sql.ru/docs/sql/u_sql/