Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> MySQL - dodanie seryjne rekordów
arpi
post 21.07.2019, 22:08:22
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 7.01.2011

Ostrzeżenie: (10%)
X----


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 ?

  1.  
  2. $i = 0;
  3.  
  4. for($i; $i<31262; $i++){
  5. $insert = mysql_query("INSERT INTO nazwa_tabeli (id_product, priority) values ($i, 'taki sam ciąg znaków')");
  6. echo $i.'<br>';
  7. }
  8.  


z góry wielkie dzięki
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kreatiff
post 23.07.2019, 21:52:07
Post #2





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:
  1. $pdo = new PDO('mysql:host=localhost;dbname=nazwa_bazy;charset=utf8', 'user', 'hasło');
  2. $pdo->beginTransaction();
  3. $q = $pdo->prepare("INSERT INTO nazwa_tabeli (id_product, priority) values (:id_product, :priority)");
  4. for ($i = 0; $i < 31262; $i++) {
  5. $q->bindValue(':id_product', $i, PDO::PARAM_INT);
  6. $q->bindValue(':priority', 'taki sam ciąg znaków', PDO::PARAM_STR);
  7. $q->execute();
  8. }
  9. $pdo->commit();


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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 10.06.2024 - 18:56