Автор Тема: Поиск по MySQL  (Прочитано 5815 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Zzzz

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Поиск по MySQL
« : 26 Января 2003, 13:59:35 »
У меня есть в MySQL таблица на 600 мегов, так вот, мне нужно сделать по ней поиск. Я написал поиск, но он при открытии таблицы грузит её всю в оперативку, а как сделать чтобы нормально искал по такому объёму?
Если нужно, то в таблице примерно 4700000 записей...

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Поиск по MySQL
« Ответ #1 : 26 Января 2003, 14:12:11 »
Цитировать
У меня есть в MySQL таблица на 600 мегов, так вот, мне нужно сделать по ней поиск. Я написал поиск, но он при открытии таблицы грузит её всю в оперативку, а как сделать чтобы нормально искал по такому объёму?

Это как же ты ишешь? Достаёшь всю таблицу и по ней ПХПшными функциями... Это не правильно. Надо индексы делать...
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн Zzzz

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Поиск по MySQL
« Ответ #2 : 26 Января 2003, 16:04:54 »
Tronyx
А как ?
Можно пример ?

Оффлайн semya

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 0
    • Просмотр профиля
Поиск по MySQL
« Ответ #3 : 26 Января 2003, 17:46:19 »
а что стандартный способ формирования запроса к базе а потом обработки результата не помогает?

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Поиск по MySQL
« Ответ #4 : 26 Января 2003, 19:23:50 »
Zzzz пока нет, т.к. не известно что из себя представляют эти 600 мегов, конкретизируй.
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн nagash

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 341
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.nagash.org
Поиск по MySQL
« Ответ #5 : 26 Января 2003, 19:39:32 »
надо доставать из базы только те поля которые тебе понадабятся... а не все... вобщем select * непрокатит...
потом если уж даже в этом случае очень много достаётся то можно лимитами достовать... скажем по 1000 записей... ну или сколько там в голову взбредёт...

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Поиск по MySQL
« Ответ #6 : 26 Января 2003, 20:39:59 »
nagash слышишь звон, да не знаешь где он. Не думай, что ты один здесь "умный". Звездочка, не звёздочка один х.. - 600 мегов, ИМХО без индексов не обойтись, хотя черт его знает какие там у него данные.
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Поиск по MySQL
« Ответ #7 : 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 которых есть слово город или деревня

Оффлайн nagash

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 341
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.nagash.org
Поиск по MySQL
« Ответ #8 : 27 Января 2003, 03:49:40 »
Цитировать

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

эм... я конечно извиняюсь но откуда появилось такое предположение? я просто дал свой совет... разве нет? м...? или здесь только ты можешь советы давать? получается типа форум одного модератора... так?
обоснуй...

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Поиск по MySQL
« Ответ #9 : 27 Января 2003, 10:20:32 »
Цитировать
или здесь только ты можешь советы давать? получается типа форум одного модератора... так?

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

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

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

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

PS моё замечение относится только к "звездочки", про лимит всё верно.
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн Zzzz

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Поиск по MySQL
« Ответ #10 : 27 Января 2003, 19:28:27 »
В этой базе данных хранится база данных МГТС, со стандартными полями.
Так вот, мне надо производить по ней поиск в зависимости от ведённых данных. Например если я ввёл поиск по телефонному номеру, то мне нужно искать только телефонный номер, а если я ввёл адрес, то искать нужно адрес.

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Поиск по MySQL
« Ответ #11 : 27 Января 2003, 20:52:19 »
Так чего же ты мозги нам пудришь? Используй, как Ромик посоветовал оператор WHERE и будет тебе счастье и благоденствие. А если результатов слишком много - LIMIT спасет отца русской демократии.
[OFF]
Так и не понял - причем тут гружение таблицы в память?
[/OFF]
TANSTAAFL

Оффлайн Гаррилл

  • Наглый тип
  • Постоялец
  • ***
  • Сообщений: 202
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phpbbcms.sf.net
Поиск по MySQL
« Ответ #12 : 27 Января 2003, 21:09:05 »
Zzzz
Цитировать
В этой базе данных хранится база данных МГТС, со стандартными полями.

А откуда, например мне, знать, что там за поля. Объясни, что там за названия и типы полей. Приведи всю структуру. Потом нормально объясни, что не получается, чего хочешь. А то ведь все обсуждают, а тебя и нет.
Если понятливый, то юзай первый ответ Ромика в этой теме.

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Поиск по MySQL
« Ответ #13 : 27 Января 2003, 22:57:28 »
Цитировать
Так вот, мне надо производить по ней поиск в зависимости от ведённых данных. Например если я ввёл поиск по телефонному номеру, то мне нужно искать только телефонный номер, а если я ввёл адрес, то искать нужно адрес.

Ууууууу как всё запущено... Ты бы хоть SQL подъучил! Значит так, идика учи - http://sql.ru/docs/sql/u_sql/
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

 

Sitemap 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