Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2014, 13:46   #1
Folly
Пользователь
 
Регистрация: 14.03.2009
Сообщений: 12
По умолчанию поиск по большому массиву данных или что я делаю не так

Люди, подскажите кто знает или может встречался с этим! Перечитала кучу всего, но конкретной инфы не нашла.
Есть таблица с 2-мя полями: id (ключ) и data (blob).
data сжата и инфа становится удобочитаемой после выполнения
PHP код:
uncompress (data
В поле data после разжатия лежит текст вида:

body: Диета, как похудеть
domain: dieta-71kg.ru
title: Все о диетах

Т.е. на каждый id есть такой вот блок инфы про домен.
Таких вот доменов куча, к слову вся база весит не один Гб.
Поскольку домены могут повторяться, есть задача найти одинаковые.
Как я только не искала:
PHP код:
select from table where uncompress (datarlike 'dieta-71kg\.ru'
select from table where uncompress (datalike '%dieta-71kg%'
select from table where uncompress (dataregexp 'dieta[:punct:]71kg\.ru' 
и т.д.
Ошибок код не выдает, сижу жду 10 мин, полчаса, час... сервер всё обрабатывает и обрабатывает.... я не выдерживаю и убиваю процесс и пробую другую вариацию и опять также.
Прочитала про fulltext, но он не работает с blob.
Вопрос: я правильно делаю и может просто надо подождать часа так 3? или есть более простой вариант или я где ошибку допускаю?
Folly вне форума Ответить с цитированием
Старый 31.01.2014, 13:52   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Соболезную - оптимизация без изменения структуры данных не предвидится. Ждать. Наверно долго. И побыстрей с like будет.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.01.2014, 15:40   #3
Folly
Пользователь
 
Регистрация: 14.03.2009
Сообщений: 12
По умолчанию

поняла. спасибо!

А подскажите пожалуйста, с помощью какой функции я смогу разбить это поле на несколько полей, к примеру на 2: в одном будет только название домена, а в другом всё остальное (title, body).

Последний раз редактировалось Stilet; 01.02.2014 в 20:37.
Folly вне форума Ответить с цитированием
Старый 01.02.2014, 19:28   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

нет такой функции, поля создаются через alter table ... а потом update с разбором данных
eval вне форума Ответить с цитированием
Старый 01.02.2014, 19:43   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Создайте дополнительное строковре поле соответствующей длины. Потом UPDATE и на долго в это поле из blob с использованием uncompress. Целиком или с выделением нужной части. См. аналоги функций Position и Substring. И искать с помощью like потом по текстовому полю.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.02.2014, 20:03   #6
Folly
Пользователь
 
Регистрация: 14.03.2009
Сообщений: 12
По умолчанию

спасибо. так и сделаю
Folly вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите Что я делаю не так? FaRRa Общие вопросы Delphi 5 22.09.2013 16:48
Что не так делаю? ratqa Общие вопросы C/C++ 2 13.12.2012 16:54
Что не так я делаю? volha_alina Паскаль, Turbo Pascal, PascalABC.NET 2 23.05.2012 13:05
Что я делаю не так rj-45 Microsoft Office Excel 7 22.11.2011 10:21
Что не так делаю? L6go1as Общие вопросы C/C++ 5 28.10.2011 07:54