powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
25 сообщений из 85, страница 3 из 4
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38618650
useronforum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем после оптимизации всё стало намного медленнее работать.
1 запись изменяется по 2 минуты.
И за месяц так не обработается.


Я везде комментарии с сообщениями поставил.
Тормозит запрос
Код: pascal
1.
2.
3.
4.
5.
6.
      query_result_image := MySQL.Query(
        'SELECT IMAGE FROM MyTable' +
        ' WHERE CODE = ' + query_result.ValueByName['CODE'] +
        ' and NUM = ' + query_result.ValueByName['NUM'] +
        ' ORDER BY BARCODE, PHOTO_NUM, DATE_INS'
        );



Думаю сортировка по индексу не применяется,
и тратятся ресурсы на поддержку сортировки по 3 полям,
хотя ЭТОТ ЗАПРОС ВСЕГДА ВОЗВРАЩАЕТ 1 ЗАПИСЬ (200 Кб - 3 Мб).
Наверно лучше без сортировки.

А есть ли метод "FIND FIRST" в языке SQL чтобы использовать вместо SELECT многих записей?

И какой наиболее быстрый способ загрузки BLOB-поля из файла,
с учётом, что я могу программу локально на сервере запустить?

===
Подозреваю, что есть какое-то ограничение на скорость передачи данных,
ведь все данные передаются по сетевому протоколу хоть и внутри 1 компьютера,
а интернет у нас не быстрый).
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38618701
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
useronforumТормозит запрос
Код: pascal
1.
2.
3.
4.
5.
6.
      query_result_image := MySQL.Query(
        'SELECT IMAGE FROM MyTable' +
        ' WHERE CODE = ' + query_result.ValueByName['CODE'] +
        ' and NUM = ' + query_result.ValueByName['NUM'] +
        ' ORDER BY BARCODE, PHOTO_NUM, DATE_INS'
        );

Знаете... мои нервы хоть и были отмечены выше, но они тоже заканчиваются.
Зачем здесь вообще сортировка?
Уберите сортировку, соберите запрос в строковую переменную, выведите ее на экран или еще куда-нибудь. Затем подключитесь к MySQL консольным или GUI-клиентом или PHPMyAdmin-ом и посмотрите план этого запроса. После этого показывайте нам запрос и его план.
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38618825
useronforum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сортировку убрал, скорость почти не изменилась.

Но когда добавил "LIMIT 1" скорость заметно возросла
(но сильно уменьшается при приближении к концу таблицы)

авторЗатем подключитесь к MySQL консольным или GUI-клиентом или PHPMyAdmin-ом и посмотрите план этого запроса. После этого показывайте нам запрос и его план.
Это как?
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38618864
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
useronforumНо когда добавил "LIMIT 1" скорость заметно возрослаЛибо вы что-то путаете, либо изначальная установка "каждая запись уникальна по паре значений CODE и NUM" неверна.
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38618869
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
useronforumЭто как?Посмотреть план запроса можно, например, добавив перед ним слово EXPLAIN.
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38618893
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и покажи код по аналогии с 1 постом
в чем тормоза?
в обработке дельфи или mysql сервера?
можешь / умеешь пользоваться пошаговой отладкой?
поставь таймеры - определи какой кусок кода работает дольше

авторНо когда добавил "LIMIT 1" скорость заметно возросла
ты что-то скрываешь
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38618951
useronforum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: pascal
1.
2.
3.
4.
SELECT IMAGE FROM MyTable' +
        ' WHERE CODE = ' + query_result.ValueByName['CODE'] +
        ' and NUM = ' + query_result.ValueByName['NUM'] +
        ' LIMIT 1'



EXPLAIN
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
table: "MyTable"
type: "ALL"
possible_keys: "PRIMARY,CODE"
key: ""
key_len: ""
ref: ""
rows: "51956"
Extra: "Using where"



Смущает rows. В таблице меньше записей кажется.

авторавторНо когда добавил "LIMIT 1" скорость заметно возросла
Либо вы что-то путаете, либо изначальная установка "каждая запись уникальна по паре значений CODE и NUM" неверна.
Уникальна практически, но как уникальная возможно не установлена (как ключ).

авторможешь / умеешь пользоваться пошаговой отладкой?
поставь таймеры - определи какой кусок кода работает дольше
Использую. С их помощью определил, что именно этот запрос тормозит.
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38619004
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так проверь
Код: sql
1.
2.
SELECT IMAGE FROM MyTable' +
        ' WHERE CODE = ' + query_result.ValueByName['CODE']



и соответсвенно поправиь везде

и код приведи с делфи
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38619011
useronforum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,
Не правильно.
Есть записи с одинаковым CODE, но разным NUM.
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38619031
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
useronforumEXPLAIN
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
table: "MyTable"
type: "ALL"
possible_keys: "PRIMARY,CODE"
key: ""
key_len: ""
ref: ""
rows: "51956"
Extra: "Using where"


Смущает rows. В таблице меньше записей кажется.useronforumПро ключи узнал:
PRIMARY KEY (`CODE`,`NUM`,`DATE1`).Не верю.
Либо ключа нет, либо он не такой, либо запрос не такой. Покажите итоговый запрос, а не выражение, его вычисляющее.

P.S. Количество записей примерное, это оценка.
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38619032
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выложи DDL таблицы MyTable
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38619065
useronforum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторавторПро ключи узнал:
PRIMARY KEY (`CODE`,`NUM`,`DATE1`).
Не верю.
Либо ключа нет, либо он не такой, либо запрос не такой. Покажите итоговый запрос, а не выражение, его вычисляющее.
Посмотрел сторонней программой. Пишет:
Indexes: CODE
Fields: CODE
Index method: BTREE

Foreign keys:
Name: photo
Fields: CODE

Ранее смотрел другой программой, там по другому кажется написано было,
но я тогда мог перепутать индекс с текущей сортировкой.

Попробую сортировку по CODE.

===
Обнаружил триггер на таблице:

В OnUpdate таблицы:

BEGIN
UPDATE `list` SET `posted` = 0 WHERE CODE = NEW.`CODE`;
END


Казалось бы проблема найдена,
НО
тормозит чтение BLOB-поля, а не запись нового значения его.

Или теоретически возможно, что я отправляю update,
а когда следом читаю SELECT, то MySQL ещё выполняет этот триггер,
и поэтому тормозит загрузка данных?

===
А возможно ли временно отключить триггер,
а потом включить не удаляя?
Если да, то как?
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38619066
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
useronforum,

покажите результат запроса CREATE TABLE MyTable
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38619086
useronforum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я такой запрос выполнить не могу.
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38619111
useronforum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно ли создать триггеры через SQL-запрос?

А то я их отключил, а они удалились при этом.
(копию их кода я из резервной копии потом попробую восстановить.)
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38619125
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
useronforumЯ такой запрос выполнить не могу.Что мешает?
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38619126
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
useronforumА можно ли создать триггеры через SQL-запрос?

А то я их отключил, а они удалились при этом.
(копию их кода я из резервной копии потом попробую восстановить.)Отключения триггеров в MySQL нет, только удаление и создание.

Триггера только через SQL-запрос и можно создать, иначе никак.

Но это явно не причина медленного чтения из таблицы. Причина - отсутствие подходящего индекса.
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38619146
useronforum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А может индекс временно создать,
обработать все BLOB и индекс удалить?

===
Долго ли будет создаваться индекс для БД 3 Гб и как узнать,
что он создался и все записи проиндексированы?
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38619154
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
useronforumА может индекс временно создать,
обработать все BLOB и индекс удалить?Можно и так, если обработка нужна один раз, а не регулярно.
useronforumДолго ли будет создаваться индекс для БД 3 Гбдостаточно быстро, сам индекс-то получится маленький.
useronforumкак узнать,
что он создался и все записи проиндексированы?Выдаст в конце "ОК", значит все записи проиндексированы. В противном случае выдаст ошибку.
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38619162
useronforum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А какие запросы к БД создают триггер и индекс?

Напишите примеры запроса для MySQL, чтобы мне долго не искать.
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38619165
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftuseronforumЯ такой запрос выполнить не могу.Что мешает?
?????
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38619169
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
useronforumА какие запросы к БД создают триггер и индекс?

Напишите примеры запроса для MySQL, чтобы мне долго не искать.А вы ищите быстро :)
У MySQL вполне приличная документация и она неплохо структурирована.
CREATE TRIGGER
Trigger Syntax and Examples
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38619178
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скачай db forge и не майся
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38619240
useronforum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем одной программой удалил триггеры,
а создать заново она их не может.

Пришлось другой создавать (HeidiSQL).

К счастью создались.

===
Про индексы:

Программа пишет:
Код: pascal
1.
2.
3.
	PRIMARY KEY (`CODE`, `NUM`, `DATE1`),
	INDEX `CODE` (`CODE`),
	CONSTRAINT `photo` FOREIGN KEY (`CODE`) REFERENCES `code` (`CODE`)



А как в SQL запросе сказать, что нужно использовать индекс?
...
Рейтинг: 0 / 0
Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
    #38619254
useronforum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем запрос теперь такой:
Код: pascal
1.
2.
3.
4.
5.
6.
      query_result_image := MySQL.Query(
        'SELECT IMAGE FROM MyTable' +
        ' WHERE CODE = ' + query_result.ValueByName['CODE'] +
        ' and NUM = ' + query_result.ValueByName['NUM'] +
        ' ORDER BY CODE, NUM LIMIT 1'
        );



Создал дополнительный индекс CODE_NUM по полям CODE, NUM,
но это судя по всему не повлияло.

Но при использовании ORDER BY CODE, NUM
EXPLAIN стало возвращать:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
table: "MyTable"
type: "index"
possible_keys: "PRIMARY,CODE_NUM,CODE"
key: "PRIMARY"
key_len: "39"
ref: "" / rows: "52860"
Extra: "Using where"



Завтра опять буду пробовать на настоящей базе данных.
...
Рейтинг: 0 / 0
25 сообщений из 85, страница 3 из 4
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Быстрое попеременное чтение и изменение BLOB-записей таблицы в базе данных MySQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]