Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Beberapa kueri MYSQL menjadi beberapa tabel kolom

Oke, pengoptimal kueri tampaknya memiliki beberapa masalah dengan jawaban saya sebelumnya dengan tabel besar. Coba solusi ini sebagai gantinya, ini berfungsi dengan subkueri dependen:

SELECT DATE_FORMAT(timeTable.minuteTime, '%Y-%m-%d %k:%i') time,
T2.temp temp,
S2.solids solids,
P2.Ph Ph
FROM
(
    SELECT minuteTime.minuteTime minuteTime,
    ( SELECT MAX(time) FROM temperature WHERE time <= minuteTime.minuteTime AND time >= NOW() - INTERVAL 1 HOUR) tempTime, 
    ( SELECT MAX(time) FROM ph WHERE time <= minuteTime.minuteTime AND time >= NOW() - INTERVAL 1 HOUR) phTime,  
    ( SELECT MAX(time) FROM solids WHERE time <= minuteTime.minuteTime AND time >= NOW() - INTERVAL 1 HOUR) solidsTime
    FROM  
    (
        SELECT time + INTERVAL 59 - SECOND( time ) SECOND minuteTime
        FROM Ph
        WHERE time >= NOW() - INTERVAL 1 HOUR AND time <= NOW()
        UNION SELECT time + INTERVAL 59 - SECOND( time ) SECOND
        FROM solids
        WHERE time >= NOW() - INTERVAL 1 HOUR AND time <= NOW()
        UNION SELECT time + INTERVAL 59 - SECOND( time ) SECOND
        FROM temperature
        WHERE time >= NOW() - INTERVAL 1 HOUR AND time <= NOW()
        GROUP BY 1
    ) minuteTime
) timeTable
LEFT JOIN temperature T2 ON T2.time = timeTable.tempTime
LEFT JOIN solids S2 ON S2.time = timeTable.solidsTime
LEFT JOIN ph P2 ON P2.time = timeTable.phTime
ORDER BY minuteTime ASC

Saya telah menyiapkan tiga tabel dengan sekitar 800.000 baris data uji, masing-masing. Pada MySQL 5.5.30, kueri di atas berjalan dalam waktu sekitar 3,5 detik dan mengembalikan 61 baris hasil. Tetapi Anda benar-benar harus memiliki indeks pada setiap kolom waktu:

ALTER TABLE `ph` ADD INDEX ( `time` ) ;
ALTER TABLE `solids` ADD INDEX ( `time` ) ;
ALTER TABLE `temperature` ADD INDEX ( `time` ) ;

Jika tidak, kueri tidak akan dihentikan. Saya yakin tidak ada kueri yang menangani jumlah data ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instal Magento mengeluh tentang InnoDB yang hilang saat tersedia

  2. MySQL AUTO_INCREMENT berdasarkan grup menggunakan InnoDB atau alternatif

  3. Bagaimana saya bisa membuat URL dinamis di php?

  4. java.sql.SQLException:Tidak ditemukan driver yang cocok untuk jdbc:mysql://localhost:3306/dbname

  5. Ekspor data MySQL berubah waktu