VFP中如何建立双字段组合的候选索引 50
就是说假设有姓名和学科以及成绩3个字段,现在要建立由姓名和学科两个字段组成的候选索引。也就是说允许姓名重复,也允许学科重复,但是姓名+学科必须是唯一的,这个应该如何建立...
就是说假设有姓名和学科以及成绩3个字段,现在要建立由姓名和学科两个字段组成的候选索引。也就是说允许姓名重复,也允许学科重复,但是姓名+学科必须是唯一的,这个应该如何建立
展开
2016-06-25
展开全部
例如你有一个 学生表。
字段包含 学号, 班级, 姓名,性别, 出生年月日。
你创建一个 组合索引 ( 班级, 姓名)
那么
SELECT * FROM 学生表 WHERE 班级='2010级3班' AND 姓名='张三' 将使用索引.
SELECT * FROM 学生表 WHERE 班级='2010级3班' 将使用索引 .
SELECT * FROM 学生表 WHERE 姓名='张三' 将不使用索引。
删除掉上面的索引
再创建两个 独立索引
索引1 ( 班级)
索引2 ( 姓名)
那么
SELECT * FROM 学生表 WHERE 班级='2010级3班' AND 姓名='张三' 将根据数据库的分析信息, 自动选择使用索引1或者索引2中的一个 (理论上会使用 索引2, 因为 姓名=张三的人少, 优先找到所有 姓名为 张三的人以后, 然后再从这些数据中, 找班级 = '2010级3班' 的
).
SELECT * FROM 学生表 WHERE 班级='2010级3班' 将使用索引1 .
SELECT * FROM 学生表 WHERE 姓名='张三' 将使用索引2。
字段包含 学号, 班级, 姓名,性别, 出生年月日。
你创建一个 组合索引 ( 班级, 姓名)
那么
SELECT * FROM 学生表 WHERE 班级='2010级3班' AND 姓名='张三' 将使用索引.
SELECT * FROM 学生表 WHERE 班级='2010级3班' 将使用索引 .
SELECT * FROM 学生表 WHERE 姓名='张三' 将不使用索引。
删除掉上面的索引
再创建两个 独立索引
索引1 ( 班级)
索引2 ( 姓名)
那么
SELECT * FROM 学生表 WHERE 班级='2010级3班' AND 姓名='张三' 将根据数据库的分析信息, 自动选择使用索引1或者索引2中的一个 (理论上会使用 索引2, 因为 姓名=张三的人少, 优先找到所有 姓名为 张三的人以后, 然后再从这些数据中, 找班级 = '2010级3班' 的
).
SELECT * FROM 学生表 WHERE 班级='2010级3班' 将使用索引1 .
SELECT * FROM 学生表 WHERE 姓名='张三' 将使用索引2。
追问
E....其实我的问题在于复合索引里的字段是数值型的,刚才在网上找到了答案,数值型的复合索引不能用+这样的方式,要用str()+str()的方式。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |