2016-09-21 10 views
1

我想要獲得一個使用具有100,000個條目的數據庫的索引工作的簡單示例,並查看它如何提高速度。該表看起來是這樣的:關於如何在表格創建後在sqlalchemy中添加基本索引的困惑

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」,「姓氏」,「年齡」和「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'])) 

我想知道什麼語法可以正確使用create_at的新索引上的create(),因爲索引是在創建表之後添加的,因此只查看與用戶['joined_at']處於相同Datetime的joined_at列

+0

您已在列定義中具有索引。你不需要做其他事情。有什麼問題? – davidism

+0

Ahh對不起,我不確定它是否被使用,或者我錯過了一些東西,因爲執行時間並沒有真正改變或者沒有改變 –

+0

MySQL數據庫是否在該列上顯示索引?根據先前的定義創建數據庫後,您是否添加了「index = True」?如果是這樣,您需要運行遷移以應用模型更改。 http://alembic.zzzcomputing.com/en/latest/ – davidism

回答

0

在SQL中進行索引,因此在SQLAlchemy中進行索引。

索引是底層SQL引擎的一個功能,爲了利用性能增益,不需要任何特殊查詢。純粹的定義就足夠了。