长时间查询执行 - SSP 数据表
Long query execution - SSP Datatables
我用Datables with SSP Class。我查询结果为 2000 行。
但是当我尝试 运行 查询时,我得到错误 500/504 错误(如果我有 504 table 没有加载)
我将 OVH CloudDB 与 MariadDB 10.2 一起使用,在服务器上我有 php 7.2
我的 joinQuery 看起来像:
FROM data_platforms p
LEFT JOIN game_platforms gp ON gp.platform_id = p.platform_id
LEFT JOIN games g ON g.game_id = gp.game_id
LEFT JOIN tastings t ON t.tasting_game_id = g.game_id
LEFT JOIN notes n ON n.note_game_id = g.game_id
LEFT JOIN ratings r ON r.rating_game_id = g.game_id
LEFT JOIN images i ON i.image_type_id = g.game_id AND (i.image_type = 2 || i.image_type = 1)
LEFT JOIN game_generes gg ON gg.game_id = g.game_id
LEFT JOIN generes gen ON gen.id = gg.genere_id
还有 extraWhere
p.platform_id = '.$platformID.' AND g.game_status = 1
和groupBy
gp.game_id
有什么方法可以优化这个查询吗?
在这一点上我注定要失败,还是我应该使用不同的 SSP class?
不要使用 LEFT
除非你真的希望 'right' table 丢失。
不要“over-normalize”。例如,我希望 genre
只是一个列,而不是 many-to-many 映射 table 加上一个流派 table.
(i.image_type = 2 || i.image_type = 1)
--> i.image_type IN (1,2)
优化器可能更好。
查看此内容可能会改善 many-to-many table 索引:http://mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_table
请提供 SHOW CREATE TABLE
以便我们检查其他索引,例如 platform_id
。
让我们看看整个查询,加上 EXPLAIN SELECT ...
。 GROUP BY gp.game_id
可能无效(除非其他一切都依赖于它)。
我用Datables with SSP Class。我查询结果为 2000 行。 但是当我尝试 运行 查询时,我得到错误 500/504 错误(如果我有 504 table 没有加载) 我将 OVH CloudDB 与 MariadDB 10.2 一起使用,在服务器上我有 php 7.2 我的 joinQuery 看起来像:
FROM data_platforms p
LEFT JOIN game_platforms gp ON gp.platform_id = p.platform_id
LEFT JOIN games g ON g.game_id = gp.game_id
LEFT JOIN tastings t ON t.tasting_game_id = g.game_id
LEFT JOIN notes n ON n.note_game_id = g.game_id
LEFT JOIN ratings r ON r.rating_game_id = g.game_id
LEFT JOIN images i ON i.image_type_id = g.game_id AND (i.image_type = 2 || i.image_type = 1)
LEFT JOIN game_generes gg ON gg.game_id = g.game_id
LEFT JOIN generes gen ON gen.id = gg.genere_id
还有 extraWhere
p.platform_id = '.$platformID.' AND g.game_status = 1
和groupBy
gp.game_id
有什么方法可以优化这个查询吗?
在这一点上我注定要失败,还是我应该使用不同的 SSP class?
不要使用 LEFT
除非你真的希望 'right' table 丢失。
不要“over-normalize”。例如,我希望 genre
只是一个列,而不是 many-to-many 映射 table 加上一个流派 table.
(i.image_type = 2 || i.image_type = 1)
--> i.image_type IN (1,2)
优化器可能更好。
查看此内容可能会改善 many-to-many table 索引:http://mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_table
请提供 SHOW CREATE TABLE
以便我们检查其他索引,例如 platform_id
。
让我们看看整个查询,加上 EXPLAIN SELECT ...
。 GROUP BY gp.game_id
可能无效(除非其他一切都依赖于它)。