Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql:如何优化这个查询。为了更快的结果_Mysql_Sql - Fatal编程技术网

Mysql:如何优化这个查询。为了更快的结果

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

如何优化这个查询,为了更快的结果,它在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 ,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
来详细说明。