powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / ускорить работу связки запросов
33 сообщений из 33, показаны все 2 страниц
ускорить работу связки запросов
    #38565122
MargaritaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Есть два таблицы, допустим
Студент
id
name

ну и , допустим, таблица какая-нибудь
Оценки
id
idStudent
mark

как связаны понятно)

на вход подается строка "имя студента, оценка", соответственно берем имя студента, вставляем в таблицу студент, если такого там нет, забираем idэтого студента , вставляем в Оценки...

вопрос: как бы так убыстрить эту всю канитель с таблицей Студент? наверняка же кто-то уже с такой проблемой сталкивался... а то сижу тут, изобретаю колесо...

изначально было у меня SELECT по имени (ну или хешу от имени) студента, если селект ничего не дал, то инсер и опять то же селект (ибо id вставленой записи надежно вместе с селектом кажется получить нельзя?).. как-то убожественно получается, поменяла на insert ignore и селект... но тоже как-то некрасиво, учитывая что зачастую студент уже есть в базе...

в общем может кто-нибудь подскажет идею как сократить время выполнения всего этого дела?
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38565185
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MargaritaMибо id вставленой записи надежно вместе с селектом кажется получить нельзя?last_insert_id(), не?
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38565200
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем оптимизировать такую простую и в общем недолгую операцию?
Разве что почитать про INSERT ... ON DUPLICATE KEY UPDATE ...
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38565641
MargaritaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

читала) INSERT ... ON DUPLICATE KEY UPDATE выполняется медленнее, чем insert ignore...кажется...

авторА зачем оптимизировать такую простую и в общем недолгую операцию?
ну, может и не дорогую, но время то все равно забирает тем более что количество таких вот операций оооочень велико... думала, может можно как-то упростить, потому что неудобная и какая-то топорная схема получается(
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38565655
MargaritaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

авторибо id вставленной записи надежно вместе с селектом кажется получить нельзя?
имела ввиду сразу вместе с инсертом) ну чтобы вставил а тебе назад поле первичного ключа возвращалось))

авторlast_insert_id()
а если у меня 100 параллельно таких роботов работает, которые делают такую связку запросов? где гарантия, что последний вставленный будет именно тем, что вставила конкретная программа...как-то побаиваюсь его пользовать... да и все равно тот же селект... есть, конечно, еще вариант: в качестве внешнего ключа использовать не поле id а какой-нибудь хеш от имени студента, тогда второй селект не надо делать... но опять же коллизии разные, и некрасиво как-то получается...
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38565758
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MargaritaMtanglir,


а если у меня 100 параллельно таких роботов работает, которые делают такую связку запросов? где гарантия, что последний вставленный будет именно тем, что вставила конкретная программа...
Собственно СУБД как раз и созданны для таких гарантий
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38565767
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MargaritaMа если у меня 100 параллельно таких роботов работает, которые делают такую связку запросов? где гарантия, что последний вставленный будет именно тем, что вставила конкретная программав документации, которую кто-то ниасилевает прочитать
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38565771
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MargaritaMимела ввиду сразу вместе с инсертом) ну чтобы вставил а тебе назад поле первичного ключа возвращалось))ну returning в мускле нету, что да, то да
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38565904
MargaritaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторв документации, которую кто-то ниасилевает прочитать
каюсь)) думала что возвращает последнее вообще а не в текущей сессии)


т.е. я так понимаю, от связки селект-инсерт-селект все равно не уйти?
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38565927
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MargaritaM,

более того :)
подумайте над ситуацией, когда вы делаете селект, и студента в базе нет
а когда делаете инсерт, он там уже появился, занесённый другим человеком :)
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38565984
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MargaritaMколичество таких вот операций оооочень велико...
По одному соединению или по разным?
В первом случае разумнее положить исходные данные в темп-таблицу, а потом одним-двумя запросами выполнить требуемое.
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38566434
MargaritaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

авторПо одному соединению или по разным?
В первом случае разумнее положить исходные данные в темп-таблицу

вот тут я не очень поняла... ну,допустим по одному, но что нам дадут временные таблицы, можете пояснить? во-первых временные таблицы обрабатываются не быстрее чем обычные, а во вторых...просто не могу понять каким боком их сюда целесообразно приложить...)
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38566438
MargaritaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

авторподумайте над ситуацией, когда вы делаете селект, и студента в базе нет
а когда делаете инсерт, он там уже появился, занесённый другим человеком :)

ну, схема с insrt ignore-select тут вполне подходит, мне кажется... вот, только last_insert_id() тут уже не воспользуешься, на сколько я понимаю... я правильно хотя бы понимаю?))
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38566469
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MargaritaMвот тут я не очень поняла...Вы правда думаете, что при выполнении пачки последовательно передаваемых запросов лимитирующее звено - это производительность MySQL-сервера?
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38566470
MargaritaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А на сколько целесообразно завести например хранимую процедуру, которая получает на вход имя студента, а на выходе отдает его id? Понимаю, что то же самое, что и было, только в профиль) но:
+ уменьшения объема кода
- не будет ли процедура медленнее чем обычные селект-инсер-селект?...
ну и опять же на сколько это целесообразно?)
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38566516
MargaritaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

авторВы правда думаете, что при выполнении пачки последовательно передаваемых запросов лимитирующее звено - это производительность MySQL-сервера?

не буду скрывать, я не совсем спец в mysql, я бы даже сказала совсем не спец) поэтому сюда и обратилась))

ну, переставите, что у вас есть текстовик со списком всех студентов страны с их оценками по разным предметам... соответственно, текстовик распарсить и в базу затолкать последовательно все это дело...это подходит под "пачки последовательно передаваемых запросов"? ну и опять же это пример с таблицами студент и оценки очень утрированы по отношению к тому что происходит у меня, просто надо было как-то проще объяснить что я имею ввиду, ситуация-то распространенная как мне кажется)

в моем случаем скорость выполнения является одним из ключевых условий... правильно построенный запрос, правильно построенная бд, что еще может мне помочь ускориться?) ну, не знаю, по поводу правильных запросов у вас вот спросила, по поводу конструкции бд... а какие еще варианты есть, разбиение на 2 таблицы и связь их по id по любому лучше, чем хранить поле текстовое в таблице Оценки.
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38566595
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MargaritaMу вас есть текстовик со списком всех студентов страны с их оценками по разным предметам... соответственно, текстовик распарсить и в базу затолкать последовательно все это дело...это подходит под "пачки последовательно передаваемых запросов"?
Да, вполне. Так вот, я бы поступил так.
Сначала выполнил бы на клиенте препроцессинг файла - очистил его от мусора, провёл препроцессинг и превратил в рафинированный CSV-файл. Затем по FTP загрузил его на сервер. Потом запустил хранимую процедуру. Внутри неё - загрузил данные во временную таблицу, используя LOAD DATA INFILE, после чего одним или несколькими (по контенту и ситуации) запросами разложил загруженные данные в боевые таблицы (при необходимости обернув процесс в транзакцию).

И уж во всяком случае не гонял бы туда-сюда вопросы-ответы. Очевидно, что при таком подходе узким местом будет не сервер, а канал передачи данных и сетевая подсистема.
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38566598
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MargaritaMчто еще может мне помочь ускориться?Микробов смотреть микроскопом, орехи колоть щелкунчиком...
для каждого этапа следует использовать специально предназначенный для этого инструмент. Колоть орехи молотком, привязанным к поршню гидравлического пресса - тоже в общем неправильно, руками и быстрее, и проще.
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38566632
MargaritaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

я занимаюсь парсингом сайта. допусти какой-нибудь сайт с данными по всем футбольным матчам за последние лет 100. Мне надо это все дело в мою базу перекачать... да, вариант с CSV хорош , но тут задача более обширная чем просто тупо в две таблички загнать... таких таблиц как "студент" у меня больше 5 будет (судьи, игроки и т.д.,поэтому и хочу что-нибудь с этим сделать, а то надоело уже)... соответственно, заходим в каждый турнир, забираем данные по нему, заносим в бд, открываем страницы для каждого матча и т.д.... ладно если был бы готовый текстовик, тут же дело обстоит немного по-другому...заносить эту всю иформацию сначала в CSV а оттуда в базу?... какой-то... вообще не вариант, как мне кажется)
ну и мне критически важны сроки, в которые вся работа будет сделана
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38566640
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MargaritaMдопусти какой-нибудь сайт с данными по всем футбольным матчам за последние лет 100. Мне надо это все дело в мою базу перекачать...Хорошо, допустим.
Идём по описанному мной варианту. Данные ведь о всех матчах там в однотипной форме... т.е. создаём всю цепочку (препроцессор, переносчик, загрузчик) для одного матча - имеем инструмент для загрузки данных о любом другом (о всех) матче.
Потом берём второй сайт. Там данные в другой форме. Переделываем препроцессор под новую структуру данных... а всё остальное можно не трогать, оно и так работает. Т.е. создаём препроцессор для одного матча - имеем инструмент для загрузки данных о любом другом (о всех) матче.
Так понятно?
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38567006
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MargaritaM,

не занимайтесь ерундой и воровством. Запросите csv формат и его вам вышлют. Далее, как сказал Akina.
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38567007
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109,

Я сам много занимаюсь парсингом сайтов. Но только в ситуации: "дайте нам Ваш прайс. - ой, его руками вколачивают прямо на сайт, можете сами взять? Конечно могу, но будет лучше, если пришлете вот это, сделав вот так."
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38567124
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MargaritaM,

В чем некрасивость?
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38567163
MargaritaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arhat109,

авторЗапросите csv формат и его вам вышлют

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

стесняюсь спросить, а как запросить этот csv, просто написать в поддержку: уважаемая редакция, пришлите мне данные?
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38567170
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MargaritaMи его дадут?Arhat109MargaritaM,

не занимайтесь ерундой и воровством. Запросите csv формат и его вам вышлют. Далее, как сказал Akina.Это, конечно, если вы в принципе можете претендовать на получение этой информации, т.е. не занимаетесь воровством.
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38567181
MargaritaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

что значит заниматься воровством? если эта информация есть в открытом доступе, пожалуйста, руками я могу значит страницы открывать и смотреть и записывать куда-то, а если я сделаю для этих целей робота - это уже воровство? единственное да, для сайта нагрузка если его робот обрабатывает, но тем же им выгоднее дать мне самим эти данные) или я чего-то не понимаю...
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38567200
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MargaritaMдля сайта нагрузка если его робот обрабатывает, но тем же им выгоднее дать мне самим эти данные) или я чего-то не понимаювозможно, им будет выгоднее заблокировать вас по айпи
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38567215
MargaritaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,



авторвозможно, им будет выгоднее заблокировать вас по айпи
ну да,знаю, проходили...

ладно, вернемся к нашим баранам... чтобы получить csv нужно написать в техподдержку сайта соответствующую просьбу? хочу хотя бы попробовать)
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38567376
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MargaritaMчтобы получить csv нужно написать в техподдержку сайта соответствующую просьбу? хочу хотя бы попробовать)Возможно, в техподдержку - не лучший вариант. Там могут послать просто чтобы не возиться. Если эта передача данных действительно в интересах той стороны, то лучше обратиться с коммерческим сотрудникам - к какому-то менеджеру или директору.

Например, когда нам приходят просьбы выслать оптовый прайс-лист, мы никогда не его высылаем, а перенаправляем людей к соответствующему менеджеру. И если они договорятся, то тогда и прайслист, и все остальное ставим в автоматическую отправку/выгрузку.
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38567599
MargaritaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

ну... что-то я тогда сомневаюсь... "здравствуйте, дядя директор. Меня зовут Рита, я сайтик ваш распарсить себе хочу... вам конечно пофиг на меня, но лучше бы вам все же удовлетворить мою просьбу, иначе я буду парсить вас подпольными методами")) моя интуиция посказывает что меня просто пошлют... далеко и нецензурно...:)

Ладно, спасибо за идею, подумаю нас работой через csv файлы)
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38567623
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MargaritaM"здравствуйте, дядя директор. Меня зовут Рита, я сайтик ваш распарсить себе хочу...Ну зачем же так топорно? :)
Можно более обтекаемо "Мы заметили, что ваши услуги/товары Х совсем не представлены в N-ской области. Мы хотели бы развивать это направление и были бы рады, если бы вы стали нашим основным партнером по представлению услуг Х. Но есть небольшая проблема в правильном выборе услуги, для которого требуется такая-то и такая-то информация. Не могли бы вы предоставить нам такую информацию? Это позволит нам предложить клиентам лучший выбор услуги/товара Х и закупать их у вас в большем объеме".
Т.е. надо предлагать выгоду, а не угрожать парсингом.

P.S. Возможно, я не совсем прав, менеджер из меня хреновый.
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38569387
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MargaritaMя занимаюсь парсингом сайта. допусти какой-нибудь сайт с данными по всем футбольным матчам за последние лет 100. Мне надо это все дело в мою базу перекачать... да, вариант с CSV хорош , но тут задача более обширная чем просто тупо в две таблички загнать...

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

Тот факт что пираты вообще удосуживаются задавать вопросы и что им еще и помогают говорит за то, что мы 1 моральные уроды и 2 что нами можно манипулировать любому кто снизойдет.

Существуют специальные форумы для халявщиков - вам туда.

По технике. Если хозяин паги догадался не выдавать вам id то никакой базы студентов вы не получите, потому что в рамках одного сайта отражающего жисть некоего учреждения могут быть несколько Ивановых Иванов Ивановичей из Задрипупинска.
...
Рейтинг: 0 / 0
ускорить работу связки запросов
    #38569404
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
deblogger,

Яндекс и Гугл тоже, по-вашему, пираты?
Они тоже парсят чужие сайты и тоже многих лишили работы...
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / ускорить работу связки запросов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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