![]() |
|
|
#11 |
|
Слесарь-сайтосборщик
Доцент
Регистрация: 22.06.2020
Адрес: Замкадье
Сообщений: 403
Сказал(а) спасибо: 985
Получил(а) "Спасибо": 1,178
Нарушения: 0/0 (0)
Репутация: 180645
|
Не надо BETWEEN. Попробуй так, как у меня написано.
Код:
UPDATE table_name SET field_name=REGEXP_REPLACE(field_name, '\\[.*?\\]', '') WHERE content_id>99999 AND content_id<200000 Последний раз редактировалось Sitealert; 20.12.2020 в 16:48. |
|
|
|
|
|
#12 |
|
Senior Member
Профессор
Регистрация: 21.06.2020
Сообщений: 859
Сказал(а) спасибо: 80
Получил(а) "Спасибо": 187
Нарушения: 0/0 (0)
Репутация: 74780
|
В принципе то же самое время - 6.7 сек с условием для одной записи
WHERE content_id = 6094079 Текст обрабатывает корректно, но время что-то не того. Сервер 4 ядра, 16 GB озу Проблем со скоростью работы БД не наблюдалось |
|
|
|
|
|
#13 |
|
Думаю, что надо худеть
Академик
Регистрация: 22.06.2020
Сообщений: 1,791
Сказал(а) спасибо: 1,526
Получил(а) "Спасибо": 1,939
Нарушения: 0/0 (0)
Репутация: 632655
|
sanek1991, эта операция очень затратна, если большая таблица - так делать не надо.
Надо через php тоже регулярное выражение прогнать (preg_replace) с лимитами по 5-10 тысяч строк за раз. Тут для скорости вообще нужно схитрить, создать таблицу временную с одним полем для этого текста и ключем как ключ основной талицы. При проходе php, выбрать только ключ и это поле текста (SELECT key, text FROM...) записывать результат изменения в эту временную таблицу и по окончании сделать вставку в основную: Код:
INSERT INTO table_name (key, text) SELECT key, text FROM table_temp ON DUPLICATE KEY UPDATE table_name.text=table_temp.text |
|
|
|
|
|
#14 |
|
Слесарь-сайтосборщик
Доцент
Регистрация: 22.06.2020
Адрес: Замкадье
Сообщений: 403
Сказал(а) спасибо: 985
Получил(а) "Спасибо": 1,178
Нарушения: 0/0 (0)
Репутация: 180645
|
XPraptor, какие там затраты для одной строки таблицы?
Сама операция UPDATE медленная, но мне непонятно, почему на простом REPLACE не тормозит. Для одной строки разница должна быть несущественной, с регуляркой или без регулярки. |
|
|
|
|
|
#15 | |
|
Senior Member
Профессор
Регистрация: 21.06.2020
Сообщений: 859
Сказал(а) спасибо: 80
Получил(а) "Спасибо": 187
Нарушения: 0/0 (0)
Репутация: 74780
|
Цитата:
Через php выбрать запись, обработать её php-шным REGEXP REPLACE, после перезаписать существующую запись в базе новой Затем выбрать следующую запись ... и тд В промежутках перед следующей выборкой, делать паузу, что-бы БД сильно не грузить. Но сам я не программер, знания на уровне общих понятий. Скрипт такой не смог найти. |
|
|
|
|
|
|
#16 |
|
Думаю, что надо худеть
Академик
Регистрация: 22.06.2020
Сообщений: 1,791
Сказал(а) спасибо: 1,526
Получил(а) "Спасибо": 1,939
Нарушения: 0/0 (0)
Репутация: 632655
|
Sitealert, Так прогони EXPLAIN на запрос одной строки - что пишет, сколько строк затрагивает, какие индексы задействует?
|
|
|
|
|
|
#17 |
|
Думаю, что надо худеть
Академик
Регистрация: 22.06.2020
Сообщений: 1,791
Сказал(а) спасибо: 1,526
Получил(а) "Спасибо": 1,939
Нарушения: 0/0 (0)
Репутация: 632655
|
|
|
|
|
|
|
#18 | |
|
Senior Member
Доцент
Регистрация: 25.07.2020
Сообщений: 437
Сказал(а) спасибо: 486
Получил(а) "Спасибо": 712
Нарушения: 0/0 (0)
Репутация: 7417
|
Цитата:
Если надо - через конвертацию в редактируемые форматы - вариантов много разных. Ну, и через php и буфер или без буфера - просто, конкретно и сердито. |
|
|
|
|
|
|
#20 |
|
Слесарь-сайтосборщик
Доцент
Регистрация: 22.06.2020
Адрес: Замкадье
Сообщений: 403
Сказал(а) спасибо: 985
Получил(а) "Спасибо": 1,178
Нарушения: 0/0 (0)
Репутация: 180645
|
|
|
|
|
![]() |
| Опции темы | |
|
|
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Ошибка - MySQL query error [1615]: Prepared statement needs to be re-prepared | sanek1991 | Хостинг и домены | 19 | 29.07.2020 19:24 |
| Помогите с SQL запросом replace | sanek1991 | Веб-строительство | 34 | 16.07.2020 13:26 |
| Переход с php5 на php7, если много mysql запросов | ziliboba0213 | Веб-строительство | 31 | 14.07.2020 18:44 |