Selasa, Desember 24, 2019

IN SELECT plus EXISTS

Environment
  1. MySQL 5.7.27
  2. Centos 6.10
mysql> DELETE FROM CSV_DATA
WHERE FILE_ID IN ( SELECT FILE_ID FROM CSV_FILE WHERE FILE_STATUS = 7)
LIMIT 100000

129 sec
Nampak-nya seluruh row akan di-scan dan nilai FILE_ID pada setiap setiap row akan dibandingkan dengan hasil dari IN SELECT .
mysql> DELETE FROM CSV_DATA
WHERE EXISTS ( SELECT FILE_ID FROM CSV_FILE WHERE FILE_STATUS = 7 )
  AND FILE_ID IN ( SELECT FILE_ID FROM CSV_FILE WHERE FILE_STATUS = 7 )
LIMIT 100000

0 sec
Nilai dari EXIST akan di-evaluate dan bila row tidak ditemukan maka perbandingan selanjutkan tidak di-evaluate.

Dalam case ini, LIMIT digunakan untuk mempersingkat waktu locking terhadap table CSV_DATA. Statement JOIN tidak dapat digunakan karena tidak compatible dengan LIMIT .

Senin, Desember 23, 2019

Windows 7 Port Forwarding

List port forwarding configuration
netsh interface portproxy show v4tov4
Append port forwading
netsh interface portproxy add v4tov4 listenport=80 connectaddress=<realIpAddress> connectport=80
Remove port forwarding
netsh interface portproxy delete v4tov4 listenport=80

Sabtu, Desember 21, 2019

Remove MySQL root password

Environment

  1. Operation System: Ubuntu 18.04.3 LTS
  2. MySQL Server: 5.7.28

Use on your own risk !

$ sudo service mysql stop
$ sudo rm -rf /var/lib/mysql
$ sudo rm -rf /var/run/mysqld
$ sudo mkdir /var/run/mysqld
$ sudo chown -R mysql:mysql /var/run/mysqld
$ sudo /usr/lib/mysqld_safe --user=mysql --initialize-insecure
$ sudo service mysql start