我有一张有三列的表格
ID、名称和类
类可以有两个值"A“或"B”中的一个
如果我想根据ID搜索一个学生,那么我的SQL查询将是
SELECT *
FROM users
WHERE ID='4'这给了我正确的结果。
假设如果我知道一个特定的值4,那么在A类行中找到这个用户的概率要比在B类中高
是否有方法优化此查询或
优化模式或
我应该为A类和B类用户将表划分为2吗?
(或者是MySQL已经知道了这些优化)
发布于 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
发布于 2015-03-14 13:46:17
您应该有一个用于class的表:
id | name
---+-------
1 | A
2 | B然后,不用类名将类in存储在用户中:
id | name | classId
---+------+-----------
1 | u1 | 1
2 | u2 | 2https://stackoverflow.com/questions/29049559
复制相似问题