arsenk

arsenk
Рейтинг
142
Регистрация
25.09.2007

Всем спасибо. Сайт вернулся в этот день вечером. Беглым взглядом скажу, что вернулся полностью и на те же позиции. Глубоко пока не мониторил, чуть позже посмотрю по трафику. Всего сайт отсутствовал около 1,5 суток.

---- UPD

перепроверил, все-таки, процентов 10-15 позиций слетело. Они либо просели на -10 -20 либо просто отсутствуют в выдаче. Будем ждать.

sokolenko:
Буквально месяц назад была такая же ситуация. Все вернется, но не сразу туда, где все было, а чуть ниже (у меня так было во всяком случае), а чуть позже вернется туда, где было. И как уже сказал Str256, гугл выкинул не все, а лишь частично и вернул все достаточно быстро.

Не совсем понимаю гуглологику тут. Сайт вернули, зачем же его опускать-то?

Matis:
arsenk, все нормально будет с вашим сайтом!

У вас же сайт не месяц или 2 месяца лежал... А всего 3 дня.

Понимаю, но как он успел так быстро тупо весь вылететь из выдачи? Вот это для меня диво

skAmZ:
Пример:

create table test1 (
id int(10) not null auto_increment,
params varchar(500) default null,
primary key (id)
)
insert into test1 set params='{"color":"red", "height":"488", "length":"140"}';
insert into test1 set params='{"color":"red", "height":"377", "length":"289"}';
insert into test1 set params='{"color":"red", "height":"349", "length":"621"}';
insert into test1 set params='{"color":"red", "height":"625", "length":"977"}';
insert into test1 set params='{"color":"red", "height":"159", "length":"945"}';
insert into test1 set params='{"color":"red", "height":"920", "length":"537"}';
insert into test1 set params='{"color":"red", "height":"453", "length":"860"}';
insert into test1 set params='{"color":"red", "height":"671", "length":"292"}';
insert into test1 set params='{"color":"red", "height":"415", "length":"562"}';
insert into test1 set params='{"color":"red", "height":"639", "length":"215"}';
insert into test1 set params='{"color":"red", "height":"579", "length":"698"}';
insert into test1 set params='{"color":"red", "height":"232", "length":"727"}';
insert into test1 set params='{"color":"red", "height":"129", "length":"565"}';
insert into test1 set params='{"color":"red", "height":"210", "length":"899"}';
insert into test1 set params='{"color":"red", "height":"500", "length":"810"}';
insert into test1 set params='{"color":"red", "height":"884", "length":"253"}';
insert into test1 set params='{"color":"red", "height":"877", "length":"730"}';
insert into test1 set params='{"color":"red", "height":"309", "length":"563"}';
insert into test1 set params='{"color":"red", "height":"894", "length":"972"}';
insert into test1 set params='{"color":"red", "height":"599", "length":"448"}';
insert into test1 set params='{"color":"red", "height":"633", "length":"832"}';
insert into test1 set params='{"color":"red", "height":"711", "length":"782"}';
insert into test1 set params='{"color":"red", "height":"632", "length":"958"}';
insert into test1 set params='{"color":"red", "height":"955", "length":"186"}';
insert into test1 set params='{"color":"red", "height":"974", "length":"645"}';
insert into test1 set params='{"color":"red", "height":"290", "length":"432"}';
insert into test1 set params='{"color":"red", "height":"392", "length":"542"}';
insert into test1 set params='{"color":"red", "height":"826", "length":"141"}';
insert into test1 set params='{"color":"red", "height":"772", "length":"846"}';
insert into test1 set params='{"color":"red", "height":"621", "length":"187"}';
insert into test1 set params='{"color":"red", "height":"848", "length":"401"}';
insert into test1 set params='{"color":"red", "height":"886", "length":"991"}';
insert into test1 set params='{"color":"red", "height":"704", "length":"307"}';
insert into test1 set params='{"color":"red", "height":"579", "length":"724"}';
insert into test1 set params='{"color":"red", "height":"875", "length":"309"}';
insert into test1 set params='{"color":"red", "height":"912", "length":"708"}';
insert into test1 set params='{"color":"red", "height":"545", "length":"606"}';
insert into test1 set params='{"color":"red", "height":"841", "length":"915"}';
insert into test1 set params='{"color":"red", "height":"247", "length":"943"}';
insert into test1 set params='{"color":"red", "height":"676", "length":"868"}';
insert into test1 set params='{"color":"red", "height":"969", "length":"616"}';
insert into test1 set params='{"color":"red", "height":"278", "length":"537"}';
insert into test1 set params='{"color":"red", "height":"542", "length":"274"}';
insert into test1 set params='{"color":"red", "height":"857", "length":"345"}';
insert into test1 set params='{"color":"red", "height":"852", "length":"113"}';
insert into test1 set params='{"color":"red", "height":"469", "length":"264"}';
insert into test1 set params='{"color":"red", "height":"632", "length":"780"}';
insert into test1 set params='{"color":"red", "height":"326", "length":"716"}';
insert into test1 set params='{"color":"red", "height":"869", "length":"672"}';
insert into test1 set params='{"color":"red", "height":"286", "length":"772"}';


Ваш запрос:

select * from (select id, params, substring(substring(params, instr(params, '"height":"')+length('"height":"')), 1, instr(substring(params, instr(params, '"height":"')+length('"height":"')), '"')-1) as _height from test1) as t where _height between 400 and 600

Жирно. Спасибо, сейчас только надо умудриться не поламать голову над этим ))

Ladycharm:
у меня доли секунды занимает обработка на PHP для 12000 записей.

На php есть функция microtime() - можно замерить время работы скрипта.
Лучше написать оба варианта выборки (на php и mysql) и сравнить время работы.

Потому что многое зависит от тонкостей программирования и количества обращений к БД.
Вообще mysql должен работать много быстрее, чем php (если не "джойнить" кучу таблиц и не делать сложных выборок из выборок).

Спасибо, попробую

Alex-striker:
А не думали над вариантом переделать структуру базы?
Лучше один раз переделать, чем потом всю жизнь мучиться с записями вида: "{"color":"red", "height":"545", "length":"110"}"

Думал. В том-то и причина создания топика. Я хочу решить, что доля меня рациональнее. Т.к. все-таки разобраться в движке и переделать выборку из базы - это тоже работа немалая. ЕСТЕСТВЕННО, если бы я это делал с нуля, то сделал бы по-нормальному :)

Ladycharm:
Форма представления данных (в БД MySQL) сильно влияет на способы из обработки.
Этим и вызвана некоторая резкость поста CyBase - классические программисты, они мыслят сразу объектно-ориентированно :)

Оператор LIKE ищет не точно, а по шаблону, _ - означает один любой символ, % - любое количество сиволов.

Практически - это шаблон по регулярному выражению.

А "долбать" джонсон-а Мускул не умеет.
У него есть встроенные строковые функции типа SUBSTRING() и тп, можно написать и свои функции, которые будут парсить json.
Но вот будет ли это быстро работать...

Большое спасибо за содержательный ответ. Теперь буду активно думать по этому вопросу.

Остается только единственный вопрос. Если, все-таки, сгребать всю базу из, скажем, 10 - 20 тыс. записей, потом циклом перебирать и выводить уже с помощью php то, что мне надо, будет ли это грузить сервак сильно или терпеть можно?

ПС: хотя, если изучить регулярки (http://www.mysql.ru/docs/man/Regexp.html) и функции (http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring), то, думаю, можно что-то слепить

CyBase:
По рукам и губам нужно бить даже за одну мысль о реализации подобного...Бить больно и сильно, пока глупая голова "прАмгрАМиста" не вернётся на землю и перестанет придумывать всякую чепуху.

Даже комментировать не буду...

Мысль идет не о реализации, а о том, что это УЖЕ реализовано, и теперь надо доработать так, чтобы можно было бы не вытягивать все из базы, а потом обрабатывать массивом, а как-то "умнее". Иначе, прийдется уже тогда вытягивать все.

ParserYa:
Нет.. отказывайтесь от джейсона, если надо выборку проводить по параметрам..

Дело не в json. Даже, если бы поле содержало бы запись "color=red, height=545, length=110" то история была бы, думаю, той же..

Maxoud:
Я бы не парился и сделал бы дерзко.
Вытащил бы все id и parameters, декодировал JSON, присоединил id к массиву и искал в массиве. С полученными id опять лез бы в базу.

Можно, но это решение "в лоб". Представьте, что записей (товаров) в таблице 100000. При каждом обращении будет в оперативе образовываться такая громадина?..

И вместо массива, скажем, из 10-15-20 товаров я буду КАЖДЫЙ раз получать и обрабатывать массив из ста тысяч. А вообще, насколько сильно такая реализация будет грузить сервак? Может, я преувеличиваю?

Ladycharm:
Можно ссорудить конструкцию типа такой:
SELECT * FROM `имя_таблицы` WHERE parameters LIKE '%"height":"4__",%' OR parameters LIKE '%"height":"5__",%' OR parameters LIKE '%"height":"6__",%', выгребет от 400 до 600 включительно.

В более сложных случаях придётся выгребать все записи и отсеивать регуляркой на PHP.

Спасибо за идею. Надо об этом подумать. Пока самый вразумительный ответ.

В общем, как я понял в mysql нет такого синтаксиса, чтобы на лету выбрал из базы так, как я хочу. Надо извращаться только подобным образом?

Да, рута у меня нет. Но на самом деле нужен мне даже не прокси, а просто выход с другого IP (для хрумака). Как бы проще это дело сделать? Пробовал tunneler, все подключается, но чистая веб-страница. Не грузит ничего (((

Алексеище:
Хотелось бы узнать существует ли вообще программа, которая имитирует выдачу нужного ресурса в различных поисковиках. Типа вводишь адрес сайта, а она показывает как сайт будет выглядеть, к примеру в гугле, когда проиндексируется. А то как-то напряжно неделями ждать переиндексации, чтобы исправить какую-нибудь мелочь в том же заголовке.

Если юзаете firefox, попробуйте firebug. Просто в коде вставьте вместо какого-то сайта нужные вам строки вашего сайта. Посмотрите на получившуюся страницу и будет Вам чудо 🚬

Всего: 574