微策略的MySQL索引优化

微策略的MySQL索引优化,mysql,indexing,microstrategy,Mysql,Indexing,Microstrategy,我在获取用于此查询的索引(由MicroStrategy生成)时遇到一些问题: 我目前拥有a12.is_欺诈账户和a12.is_测试账户的指数。Explain显示了使用这两个元素的索引合并。a11和a13的指数都很好。我可以创建什么索引来加快查询速度 作为参考,a12有大约800万个条目,其中7.4个与is_test_account=0和is_family=0的情况相匹配。复合索引通常比一个表中组合的多个单列索引提供更好的性能 如果您在请求查询帮助时包含查询的当前报告,这将非常有用 为每个表发布完

我在获取用于此查询的索引(由MicroStrategy生成)时遇到一些问题:

我目前拥有a12.is_欺诈账户和a12.is_测试账户的指数。Explain显示了使用这两个元素的索引合并。a11和a13的指数都很好。我可以创建什么索引来加快查询速度


作为参考,a12有大约800万个条目,其中7.4个与is_test_account=0和is_family=0的情况相匹配。

复合索引通常比一个表中组合的多个单列索引提供更好的性能

如果您在请求查询帮助时包含查询的当前报告,这将非常有用

为每个表发布完整的DDL()也是有帮助的,因为“a11和a13都适合索引”可能不是真的,并且没有提供关于您在这些表中定义了哪些索引的信息

如果我必须做出一些猜测,我会尝试:

ALTER TABLE call_facts ADD INDEX (method, date, call_count);

ALTER TABLE dimension ADD INDEX (user_id, is_fraudulent, is_test_account);

ALTER TABLE service ADD INDEX (service_id, in_directory);

为什么将a13.in_目录设置为“是”,而不是a13.in_目录设置为“是”?查询是由我的业务分析团队使用的某些软件生成的。我无法修改查询,因此我正在尽可能优化索引以提高性能。现在这个查询运行大约需要2个小时。我认为您需要在where的每个部分添加索引。顺便说一下,可以改变微策略SQL的结构。
ALTER TABLE call_facts ADD INDEX (method, date, call_count);

ALTER TABLE dimension ADD INDEX (user_id, is_fraudulent, is_test_account);

ALTER TABLE service ADD INDEX (service_id, in_directory);