1
MySQL(innodb)を学ぶために、users2、follow2、およびtweets2という3つのテーブルを持つTwitterアプリを作成しようとしています。MySQLの最適化 - WHERE foo INサブ選択用のテーブル全体をトラバースしますか?
次のように説明すると、tweets2のすべての行がタッチされる可能性があります。これは正確ですか? WHERE username IN(select)を行うつもりなら、与えられたユーザ名がインデックスに登録されていると仮定します。MySQLはsub-select節を取得し、それらのユーザ名を持つtweets2の行に直接行きます。
相続人explain select username, timestamp, tweet
from tweets2
where username in
(select followee from follow2 where follower='user1')
order by timestamp desc;
テーブルを作成SQLAlchemyのコード:MySQL
で
users = Table('users2', metadata,
Column('username', String(16), index=True),
Column('email', String(256)),
)
follow = Table('follow2', metadata,
Column('follower', String(16), index=True),
Column('followee', String(16), index=True),
)
tweets = Table('tweets2', metadata,
Column('id', Integer, primary_key=True),
Column('username', String(16), index=True),
Column('timestamp', BigInteger),
Column('tweet', String(200)),
)