【SQL】explain テーブル結合の順番について

同じ構造のクエリでもjoinによって結合する時の駆動表がどのテーブルになるかは実際に入る値によって異なる。
mysqlオプティマイザによって判断される。
必ずしも最初に書いたテーブルが駆動表になり結合するかどうかはわからない。

【SQL】inner join 書き方

select *
from  表A, 表B
where 表A.列1 = 表B.列2  and  表A.列3 = 値

select *
from  表A inner join 表B on 表A.列1 = 表B.列2
where 表A.列3 = 値

は同じ

inner joinは両方のテーブルにあるレコードしか反映されない。
一方にしかないレコードは削除される。
left joinは最初のテーブルにあるレコードは全て反映される。

【rails】default scope

指定したモデルの全てのクエリで使用されのでメンテナンス性が悪くなる。 default scopeでorderを使用しており、それに気づかずデバッグに時間がかかった。

参考 https://qiita.com/shierote/items/7ecbd0c099ddc3855067 https://qiita.com/qsona/items/2ca522675b27ed2ec5ba

【Mysql】SQLモードについて

MySQLは独自にSQL文を解釈しており、その設定をSQL-modeで行える。

参考
https://qiita.com/kumamo-n/items/d9a4fa3c95c8226204d8 https://www.wakuwakubank.com/posts/414-mysql-sqlmode/ https://qiita.com/hidetoshi-tsubaki/items/046d16ab46d954c55a40