Mysql
 sql >> база данни >  >> RDS >> Mysql

как да се справя с голям размер на заявката за актуализиране в mysql с laravel

Ако мислите да създадете заявка като UPDATE users SET column = 'value' WHERE id = 1 OR id = 2 OR id = 3 ... OR id = 50000 или WHERE id IN (1, 2, 3, ..., 50000) тогава това вероятно ще бъде твърде голямо. Ако можете да направите някаква логика, за да обобщите това, това ще съкрати заявката и ще ускори значително нещата в края на MySQL. Може би бихте могли да го направите WHERE id >= 1 AND id <= 50000 .

Ако това не е опция, можете да го направите на серии. Вероятно ще преминете през редовете на CSV файла, ще изградите заявката като голям WHERE id = 1 OR id = 2... заявка и на всеки около 100 реда (или 50, ако това все още е твърде голямо), стартирайте заявката и стартирайте нова за следващите 50 идентификатора.

Или можете просто да стартирате 50 000 единични UPDATE заявки във вашата база данни. Честно казано, ако таблицата използва правилно индексите, изпълнението на 50 000 заявки трябва да отнеме само няколко секунди на повечето съвременни уеб сървъри. Дори и най-натоварените сървъри трябва да могат да се справят с това за по-малко от минута.

Що се отнася до четенето на файл на парчета, можете да използвате основните функции на PHP за достъп до файлове за това:

$file = fopen('/path/to/file.csv', 'r');

// read one line at a time from the file (fgets reads up to the
// next newline character if you don't provide a number of bytes)
while (!feof($file)) {
    $line = fgets($file);

    // or, since it's a CSV file:
    $row = fgetcsv($file);
    // $row is not an array with all the CSV columns

    // do stuff with the line/row
}

// set the file pointer to 60 kb into the file
fseek($file, 60*1024);

// close the file
fclose($file);

Това няма да прочете целия файл в паметта. Не съм сигурен дали Laravel има свой собствен начин за работа с файлове, но това е как да се направи това в основния PHP.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL много бавен за заявка за промяна на таблица

  2. Как да съхранявам ежедневни записи от mysql таблица в друга?

  3. Някой знае ли за добър PHP ORM, който НЕ използва PDO?

  4. SEC_TO_TIME() Примери – MySQL

  5. Преобразуване на формата на датата в SQL? [дд.мм.гг до ГГГГ-ММ-ДД]