Mysql:如何优化这个查询。为了更快的结果
如何优化这个查询,为了更快的结果,它在1000万行上花费了80多秒 su_id和admin_id都是树索引的Mysql:如何优化这个查询。为了更快的结果,mysql,sql,Mysql,Sql,如何优化这个查询,为了更快的结果,它在1000万行上花费了80多秒 su_id和admin_id都是树索引的 SELECT su_id FROM members_ext WHERE admin_id = 5962789 两者都是INT数据类型,具有BTREE索引 su_id的基数为8496470,admin_id为10437 解释结果 id ,select_type,table ,type,rows, Extra 1, SIMPLE ,members_ext , ALL ,84964
SELECT su_id FROM members_ext WHERE admin_id = 5962789
两者都是INT数据类型,具有BTREE索引
su_id的基数为8496470,admin_id为10437
解释结果
id ,select_type,table ,type,rows, Extra
1, SIMPLE ,members_ext , ALL ,8496471 ,Using where
在admin\u id和su\u id上创建一个组合键,这样数据只能通过索引获取。不要将数字存储在varchars中,然后与数字进行比较。它不能有效地工作 在此处添加引号:
SELECT su_id FROM members_ext WHERE admin_id = "5962789"
然后,为了更快地查询,使用索引(admin\u id,su\u id)
如果此答案中有任何错误,请提供
SHOW CREATE TABLE members\u ext
。缺少一些重要的内容。该表有多少列?哪个存储引擎?你能分享一下桌子的结构吗@Syed Daniyal Asif2千万对MySQL来说算不了什么。请分享其他详细信息。su\U id的数据类型是什么?是varchar/字母数字吗?在admin\u id列上应用索引购买一台更快的机器。对downvoter:我真的对它的原因很感兴趣。我的dv。因为复合键在这种情况下没有优势,所以该怎么办?如果我们只对管理员id应用索引,为什么它不起作用?因为su_id在select中,我认为因为不是一个真正的参数。如果admin_idm是一个集群索引,那么组合键的好处就不大了。但是如果没有,键肯定会在插入新数据时产生成本,但是如果您只选择admin_id和su_id,那么键包含所有数据,因此只需要读取索引(树)-数据,而表空间本身没有数据。如果我们只对admin_id应用索引,为什么它不起作用?因为su\u id位于select索引(admin\u id)
将有所帮助<代码>索引(管理员id、用户id)可能更好。我需要查看SHOW CREATE TABLE
来详细说明。