1
た後、私は100,000件のエントリを持っており、それが速度を向上させることができる方法を見てデータベースで作業インデックスの簡単な例を取得しようとしています。表は次のようなものになります。混乱テーブル作成
user = Table('user', metadata,
Column('id', Integer, primary_key=True),
Column('first_name', String(16), nullable=False),
Column('last_name', String(16), nullable=False),
Column('age', Integer, nullable=False),
Column('joined_at', DateTime(), nullable=False, index=True),
)
を私は、キー「FIRST_NAME」、「LAST_NAME」、「時代」を持つユーザーのキー/値の辞書を与えられていますし、「joined_at」クエリは次のようになります。
q = session.query(UserTable).filter(and_(
UserTable.first_name == user['first_name'],
UserTable.last_name == user['last_name'],
UserTable.age == user['age'],
UserTable.joined_at == user['joined_at']))
私だけにjoined_atための新たな指標に)(構文が適切に作成使用するかと思ったテーブルが作成された後にインデックスが追加されましたので、[「joined_at」]ユーザーと同じ日時であるjoined_atの列を見て
すでに列定義に索引があります。他に何もする必要はありません。どうしたの? – davidism
ああ、それが使用されていたかどうか、またはパフォーマンスの時間が実際には変更されていないため、何かが不足していたかどうかはわかりませんでした –
MySQLデータベースでその列のインデックスが表示されますか?以前の定義に基づいてデータベースを作成した後に 'index = True'を追加しましたか?その場合は、モデルの変更を適用するために移行を実行する必要があります。 http://alembic.zzzcomputing.com/en/latest/ – davidism