我为mysql表创建了一个uniq索引和一个复合索引:
UNIQUE KEY `uniq_idx_on_source` (`id`,`hour`,`platform`,`type`,`first_level`(60),`second_level`(120)),
KEY `idx_on_source` (`id`,`hour`,`type`)
Uniq索引是为了防止重复数据存储mysql,以及复合索引来提高查询性能。
但是当我查询时,sql将使用uniq索引。
解释结果:
我希望使用索引idx_on_source
而不是uniq_idx_on_source
:
我找到了如下答案:
但它对我不起作用!
我的代码:
db.session.query(Source)
.with_hint(Source, 'USE INDEX (idx_on_source)')\
.filter(hour >= :begin).all()
我按str()
方法输出sql:
str(db.session.query(Source)
.with_hint(Source, 'USE INDEX (idx_on_source)')\
.filter(hour >= :begin))
输出:
' SELECT source.id AS source_id,...... FROM source_stat \ nWHERE source_stat.hour> =:hour'
但USE INDEX (idx_on_source)
没有输出!
任何人都有好主意?