如何优化我的MySQL查询以更快地检索数据

开发人员

我有一个独立的表格,我们通过每周的工作将其插入数据,然后在搜索模块中检索数据。

当我执行以下选择查询时,该表大约有4百万条记录(并且将变得更大),这需要很长时间(大约15秒)。我正在使用MySql DB。

SELECT 
    v.venueId,
    (SELECT 
            MIN(totalPerPerson)
        FROM
            PricingArtifact pa
        WHERE
            pa.venueId = v.venueId
                AND pa.mealId IN (SELECT
                    m.mealId
                FROM
                    Meal m,
                    MealDay md
                WHERE
                    m.mealId = md.mealId
                        AND m.mealDeletedAt IS NULL
                        AND md.mealDayDeletedAt IS NULL
                        AND m.venueId = v.venueId)) AS minPrice
FROM
    Venue v

请注意

  • 场所表只有12条记录。
  • 我在priceingArtifact表中具有场地编号,totalPerPerson的索引。
  • 我尝试了联接而不是子查询,并且给出了相同的结果。
  • 用餐和用餐日表中的每个记录都少于100。
浅褐色的

如果您仅在寻找场地和每人的最低总人数,则可以直接从pricepriceArtifact向下进行操作,而无需实际场地,因为pricepriceartifact具有场所ID ...,除非您也想要场所描述数据。

通过传递属性,如果V.VenueID = PA.VenueID,则可以将PA.VenueID连接到M.VenueID,而无需使用场所表。同样,PA.MealID可以直接连接到进餐表和MealDay表。

现在,您还提到了400万条记录的表。您的相关查询(查询perPerson / perVenue的min()值非常昂贵,因为您已经对第一张表中的每条记录进行子查询了。您是否真的需要回顾所有历史记录,或者是否有一些历史记录? DATE字段(例如,您仅关心过去30天的活动)?数据完成后,它真的会发生变化吗?也许保留汇总表作为分析定价的基础。

现在,为索引。我建议以下。

table            index
PricingArtifact  (venueID, mealID, totalPerPerson )
Meal             (mealID, MealDeletedAt )
MealDay          (mealID, MealDayDeletedAt )


SELECT
      PA.venueID
      MIN( PA.TotalPerPerson ) as VenueMinPerPerson
   from
      PricingArtifact PA
         JOIN meal M
             ON PA.MealID = M.MealID
            AND M.MealDeletedAt IS NULL
         JOIN MealDay MD
             ON PA.MealID = MD.MealID
            AND MD.MealDayDeletedAt Is NULL

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何优化MySQL选择查询或使其更快

来自分类Dev

如何通过XML数据更快地更新MySQL?

来自分类Dev

如何优化我的加载API的php脚本以更快地加载

来自分类Dev

如何更快地检索 500k 记录数据库数据?

来自分类Dev

如何优化打开和关闭Excel工作簿以提取数据以更快地运行

来自分类Dev

如何让我的 MySQL 查询运行得更快?

来自分类Dev

如何优化字体文件?或如何更快地加载

来自分类Dev

如何更快地显示来自 Firebase 的数据?

来自分类Dev

如何优化.filter函数,以便更快地完成过滤?

来自分类Dev

如何优化.filter函数,以便更快地完成过滤?

来自分类Dev

如何更快地从具有2000万行的表中选择数据的子查询

来自分类Dev

MySql更快地使用单独的查询或子查询?

来自分类Dev

我怎样才能更快地完成这个查询?(postgreSQL)

来自分类Dev

存储 MySql 查询结果以便更快地重用

来自分类Dev

如何在C#中更快地插入查询?

来自分类Dev

更快地进行 SQLITE 查询

来自分类Dev

优化MySQL查询,该查询使用子查询;MariaDB更快

来自分类Dev

如何使我的程序更快地进行模式匹配?

来自分类Dev

如何使我的代码更快地找到最小值?

来自分类Dev

Mac:如何更改我的DNS以更快地加载美国网站?

来自分类Dev

如何更改我的代码以更快地运行它?

来自分类Dev

如何使用Matlab更快地更新图像中的数据?

来自分类Dev

如何更快地在两个向量之间复制数据?

来自分类Dev

mysql如何更快地插入数百万条记录?

来自分类Dev

Java,如何更快地将许多记录插入MySQL?

来自分类Dev

mysql如何更快地插入数百万条记录?

来自分类Dev

mysql查询从10,000个数据中检索速度太慢(查询优化)

来自分类Dev

我将如何改善检索11.2m数据的mysql查询?

来自分类Dev

MySQL:为什么优化表后可以更快地复制到tmp表

Related 相关文章

  1. 1

    如何优化MySQL选择查询或使其更快

  2. 2

    如何通过XML数据更快地更新MySQL?

  3. 3

    如何优化我的加载API的php脚本以更快地加载

  4. 4

    如何更快地检索 500k 记录数据库数据?

  5. 5

    如何优化打开和关闭Excel工作簿以提取数据以更快地运行

  6. 6

    如何让我的 MySQL 查询运行得更快?

  7. 7

    如何优化字体文件?或如何更快地加载

  8. 8

    如何更快地显示来自 Firebase 的数据?

  9. 9

    如何优化.filter函数,以便更快地完成过滤?

  10. 10

    如何优化.filter函数,以便更快地完成过滤?

  11. 11

    如何更快地从具有2000万行的表中选择数据的子查询

  12. 12

    MySql更快地使用单独的查询或子查询?

  13. 13

    我怎样才能更快地完成这个查询?(postgreSQL)

  14. 14

    存储 MySql 查询结果以便更快地重用

  15. 15

    如何在C#中更快地插入查询?

  16. 16

    更快地进行 SQLITE 查询

  17. 17

    优化MySQL查询,该查询使用子查询;MariaDB更快

  18. 18

    如何使我的程序更快地进行模式匹配?

  19. 19

    如何使我的代码更快地找到最小值?

  20. 20

    Mac:如何更改我的DNS以更快地加载美国网站?

  21. 21

    如何更改我的代码以更快地运行它?

  22. 22

    如何使用Matlab更快地更新图像中的数据?

  23. 23

    如何更快地在两个向量之间复制数据?

  24. 24

    mysql如何更快地插入数百万条记录?

  25. 25

    Java,如何更快地将许多记录插入MySQL?

  26. 26

    mysql如何更快地插入数百万条记录?

  27. 27

    mysql查询从10,000个数据中检索速度太慢(查询优化)

  28. 28

    我将如何改善检索11.2m数据的mysql查询?

  29. 29

    MySQL:为什么优化表后可以更快地复制到tmp表

热门标签

归档