私はMySQL
データベースを使用しており、2 つのテーブルがあります。彼らはUser
、Reservation
これが私の質問です。
- 現在、
LEFT JOIN
SubQuery with を使用していましたNOT EXIST
。パフォーマンスの観点からどちらが優れていますか? - このクエリのビューを作成できますか、パフォーマンスに違いはありますか
ユーザー
| FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA |
|-------|-------------|------|-----|---------|----------------|
| uid | int(11) | NO | PRI | (null) | auto_increment |
| uname | varchar(30) | YES | | (null) | |
予約
| FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA |
|----------|-----------|------|-----|-------------------|----------------|
| rid | int(11) | NO | PRI | (null) | auto_increment |
| uid | int(11) | YES | MUL | (null) | |
| reserved | timestamp | NO | | CURRENT_TIMESTAMP | |
SQL コード:
create table user (
uid int not null auto_increment,
uname varchar(30),
primary key(uid)
);
create table reservation (
rid int not null auto_increment,
uid int,
reserved timestamp not null default CURRENT_TIMESTAMP,
primary key(rid),
foreign key (uid) references user (uid)
)
私の現在の作業 SQL クエリ
SELECT u.uid, u.uname, date_format(reserved, '%Y%m')
FROM user as u
LEFT JOIN reservation as r on
r.uid = u.uid and date_format(reserved, '%Y%m') = 201307
where r.uid is null