使用2个过滤器的SQLAlchemy查询性能非常慢

时间:2017-07-19 16:54:28

标签: python mysql sqlalchemy

我有一个查询,这非常慢。它使用两个过滤器。

db_author = session.query(Comment_Post_Author)\
    .options(load_only("author"))\
    .filter(Comment.cat_tag == config['cat_tag'], Comment.platform == config['platform'])\
    .all()

查询需要 40秒才能执行。在只有1000个条目的db表上。

SQL看起来像这样:

SELECT sb_comments_post_author.id AS sb_comments_post_author_id, sb_comments_post_author.author AS sb_comments_post_author_author
FROM sb_comments_post_author, sb_comments
WHERE sb_comments.cat_tag = %(cat_tag_1)s AND sb_comments.platform = %(platform_1)s

我不知道它是如何运作的,但我想念我输入的值。" cat_tag_1"应该是一个类别而不是"%(cat_tag_1)s" ?

数据库表设置:

CREATE TABLE IF NOT EXISTS `sb_comments_post_author` (
`id` int(10) unsigned NOT NULL,
  `author` text COLLATE utf8mb4_unicode_ci,
  `platform` tinytext COLLATE utf8mb4_unicode_ci,
  `cat_tag` tinytext COLLATE utf8mb4_unicode_ci,
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB AUTO_INCREMENT=2453 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

ALTER TABLE `sb_comments_post_author`
 ADD PRIMARY KEY (`id`), ADD KEY `Index_cat_tag` (`cat_tag`(10)), ADD KEY `Index_platform` (`platform`(10));

0 个答案:

没有答案