首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指定在MySQL中查找行的概率

指定在MySQL中查找行的概率
EN

Stack Overflow用户
提问于 2015-03-14 13:35:47
回答 2查看 241关注 0票数 0

我有一张有三列的表格

ID、名称和类

类可以有两个值"A“或"B”中的一个

如果我想根据ID搜索一个学生,那么我的SQL查询将是

代码语言:javascript
复制
SELECT *
FROM users
WHERE ID='4'

这给了我正确的结果。

假设如果我知道一个特定的值4,那么在A类行中找到这个用户的概率要比在B类中高

是否有方法优化此查询或

优化模式或

我应该为A类和B类用户将表划分为2吗?

(或者是MySQL已经知道了这些优化)

EN

回答 2

Stack Overflow用户

发布于 2015-03-14 13:47:04

您询问知道在一个类中查找行的概率是否会影响查询性能。

甚至不要开始考虑这一点,直到你有许多麻烦(数千万)行需要处理。认真地说,相反,花你不可替代的时间学习表格索引和完成你的应用程序。

如果您的索引是正确的,基于id值查找行的速度非常快。对于简单的查找,分区对性能帮助不大。而且,维护分区表是一个巨大和持续的痛苦在脖子上。

WHERE id = constant AND class = constant上使用复合索引可以使表单(id, class)的查询非常接近最优。

这里是学习SQL性能的好材料。http://use-the-index-luke.com/sql/table-of-contents

票数 2
EN

Stack Overflow用户

发布于 2015-03-14 13:46:17

您应该有一个用于class的表:

代码语言:javascript
复制
id | name
---+-------
 1 | A
 2 | B

然后,不用类名将类in存储在用户中:

代码语言:javascript
复制
id | name | classId
---+------+-----------
 1 | u1   | 1
 2 | u2   | 2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29049559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档