如何优化此查询,为了获得更快的结果,它在1000万行上花费了80多秒。
su_id AND admin_id都是BTREE索引
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
答案 0 :(得分:2)
在admin_id,su_id上组合键,这样数据就可以仅通过索引获取。
答案 1 :(得分:0)
不要在varchars中存储数字,然后与数字进行比较。它不会有效。
在此处添加引号:
SELECT su_id FROM members_ext WHERE admin_id = "5962789"
然后,为了更快的查询,请INDEX(admin_id, su_id)
如果此答案中的任何内容有误,请提供SHOW CREATE TABLE members_ext
。有一些重要的缺失。