gpt4 book ai didi

mysql - 两个相同的 MYSQL 表之间的性能差异

转载 作者:行者123 更新时间:2023-11-29 07:35:58 24 4
gpt4 key购买 nike

我已将一个表 (InnoDB) 从我的数据库复制到另一个数据库,包括所有内容和索引。两个数据库都已优化,因此碎片不是问题。所有都位于同一个 VPS 上。

我注意到我想要解决的两者之间存在性能差异 (10-20%)。

database1.table(使用索引条件;使用where)

EXPLAIN SELECT price_range FROM database1.table WHERE category = 'seating' AND visibility = 'show' GROUP BY price_range ORDER BY price_range ASC   

[id] => 1 [select_type] => SIMPLE [table] => items [type] => ref [possible_keys] => visibility_producer,price_range_visibility,category_visibility,visibility_category_price_range [key] => visibility_category_price_range [key_len] => 228 [ref] => const,const [rows] => 10106 [Extra] => Using index condition; Using where

database2.table(使用where;使用索引)

EXPLAIN SELECT price_range FROM database2.table WHERE category = 'seating' AND visibility = 'show' GROUP BY price_range ORDER BY price_range ASC    

[id] => 1 [select_type] => SIMPLE [table] => items [type] => ref [possible_keys] => visibility_producer,price_range_visibility,category_visibility,visibility_category_price_range [key] => visibility_category_price_range [key_len] => 228 [ref] => const,const [rows] => 10106 [Extra] => Using where; Using index

我认为性能差异是因为 database1.table 使用索引条件而 database2.table 使用索引。相同的查询、相同的索引、相同的服务器。

这怎么可能?关于在哪里查看的任何提示?

最佳答案

如有疑问,请验证!

这些表实际上并不相同。这在检查表格时显示:

SHOW CREATE TABLE <tablename>

本例中,检查发现在复制表的时候有两个外键约束没有被复制。

任何外键都需要一个索引,因此如果没有使用现有索引,它可能会隐式构建一个。在没有外键定义的情况下,在这种情况下两个表之间存在索引差异。

关于mysql - 两个相同的 MYSQL 表之间的性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48870495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com