Sqlalchemy如何使用强制索引?

pan*_*ang 5 python mysql sql sqlalchemy

我为 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`)
Run Code Online (Sandbox Code Playgroud)

Uniq索引是为了防止重复数据存储mysql,而复合索引是为了提高查询性能。

但是当我查询时sql将使用uniq索引。

解释结果:

在此输入图像描述

idx_on_source我希望不使用索引uniq_idx_on_source

我找到了一个答案如下:

SQLalchemy 指定使用哪个索引

但这对我不起作用!

我的代码:

db.session.query(Source)
          .with_hint(Source, 'USE INDEX (idx_on_source)')\
          .filter(hour >= :begin).all()
Run Code Online (Sandbox Code Playgroud)

我通过方法输出sql str()

str(db.session.query(Source)
          .with_hint(Source, 'USE INDEX (idx_on_source)')\
          .filter(hour >= :begin))
Run Code Online (Sandbox Code Playgroud)

输出:

'SELECT source.id AS source_id,...... FROM source_stat \nWHERE source_stat.hour >= :hour'

USE INDEX (idx_on_source)不输出!

有人有好主意吗?