MySQL - dodanie seryjne rekordów |
MySQL - dodanie seryjne rekordów |
21.07.2019, 22:08:22
Post
#1
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 7.01.2011 Ostrzeżenie: (10%) |
Witam
Do tej pory wszytskie zapytania do bazy wykonuje z poziomu PHP, jendak przy dużych ilościach danych zauważam problemy z wydajnością. Chciałbym część zapytań wykonywać bezpośrednio na bazie MySQL. Czy może ktoś wie jak zrobić poniższe zapytanie (pętle) bez zastosowania php ?
z góry wielkie dzięki |
|
|
22.07.2019, 06:33:05
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Najpierw generuj listę values potem podstaw do zapytania. Rozszerzenie mysql_ zostało dawno temu usunięte z php.
-------------------- |
|
|
23.07.2019, 09:32:35
Post
#3
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 7.01.2011 Ostrzeżenie: (10%) |
Jeśli ma ktoś gotowy kod SQL będę zobowiązany.
|
|
|
23.07.2019, 20:24:18
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) |
Domyślam się że viking miał na myśli coś w wym stylu
chociaż przy takich ilościach rekordów i tak może to być wolne. Ewentualnie można by się pokusić o napisanie jakiejś procedury sql która będzie "robiła pętle", istnieje szansa że będzie to trochę szybsze niż wysyłanie tak dużego zapytania https://dev.mysql.com/doc/refman/5.7/en/while.html Ten post edytował sazian 23.07.2019, 20:25:06 |
|
|
23.07.2019, 21:52:07
Post
#5
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 105 Dołączył: 7.08.2012 Ostrzeżenie: (0%) |
A spróbuj to zrobić tak. Nadal to jedno po drugim, ale w jednej transakcji i PDO:
A jak ma być najszybsze (czyli jedno zapytanie z 30k+ INSERTami na raz <nie mam pojęcia, czy tyle można, w SSLite jest zdaje się limit jakiś, 500?>), to tak jak wyżej, albo jeśli 'taki sam ciąg znaków' jest wszędzie ten sam, to najpierw pododawaj same id_produkt, a dopiero później zrób update priority dla całego przedziału. Ten post edytował kreatiff 23.07.2019, 21:52:45 |
|
|
25.07.2019, 10:13:38
Post
#6
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 7.01.2011 Ostrzeżenie: (10%) |
Dziękuje za odpowiedzi, wasze rozwiązania za pomocą PHP są rzeczywiście troszkę szybsze od mojego (przykład podałem taki prosty aby był łatwy do analizy).
Jednak nie ukrywam że pytałem jak to zrobić bez PHP, czyli za pomoca samego SQL. wiem że są procedury w MySQL ale nie miałem z tym nigdy styczności, a podejrzewam ze za ich pomocą taki skrypt wykona się kilkadziesiąt razy szybciej. Przykład: kopiowanie tabel za pomoca SQL trwa kilka sekund, z poziomu PHP import/export około minuty. |
|
|
25.07.2019, 10:16:44
Post
#7
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
25.07.2019, 18:02:08
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) |
@kreatiff tylko po co pdo skoro @arpi korzysta z mysql - należały by przejść na mysqli
https://www.php.net/manual/en/mysqli.prepare.php https://www.php.net/manual/en/mysqli.begin-transaction.php https://www.php.net/manual/en/mysqli.commit.php |
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 18:40 |