标题:如何写索引,让查询速度快? 是sql语言
只看楼主
yytx11
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2017-8-12
结帖率:68.18%
已结贴  问题点数:10 回复次数:10 
如何写索引,让查询速度快? 是sql语言


比如按名称索引
搜索更多相关主题的帖子: 索引 查询 速度 sql 语言 
2017-09-09 11:34
yytx11
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2017-8-12
得分:0 
按厂家索引,供应商,名称,商品名,各个索引还是怎么做?这四个字段的记录都有重复。
2017-09-09 11:47
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:5 
在 SQL 命令中,Visual FoxPro 决定需要什么来优化一个查询,并为你做这件事。你不需要打开表或索引。如果 SQL 确定它需要索引,它会为自己创建一个临时索引。
2017-09-09 12:13
yytx11
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2017-8-12
得分:0 
回复 3楼 吹水佬
你的意思是,我这个小程序,里面不需要改动 了,是吗
就是不需要增加索引命令了吗
2017-09-09 12:47
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用yytx11在2017-9-9 12:47:43的发言:

你的意思是,我这个小程序,里面不需要改动 了,是吗
就是不需要增加索引命令了吗

开头就是“在 SQL 命令中”,如果不是用 SQL 命令呢?就那么简单。
2017-09-09 14:03
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:3 
查询条件是:厂家,供应商,名称,商品名
如果是标准的SQL,如MSSQL,就要做5个索引
1,分别用"厂家,供应商,名称,商品名"做4个单独的索引
2,用"厂家,供应商,名称,商品名"4个名称,一起做个复合索引.
但在VFP中,我就不知道是不是也这样的

2017-09-09 14:22
yytx11
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2017-8-12
得分:0 
回复 5楼 吹水佬
就是在SQL中查询,是不需要事先做索引的。谢谢
2017-09-09 14:23
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
因为你查询条件是动态的,当查询条件只有1个时,他就使用单独的索引,但当查询条件2个以上时,就使用复合索引
2017-09-09 14:24
yytx11
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2017-8-12
得分:0 
回复 8楼 mywisdom88
嗯嗯。SQL确实灵活。
2017-09-09 14:26
xinjie
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:18
帖 子:257
专家分:501
注 册:2007-8-11
得分:2 
谁有兴趣执行下面的代码?
程序代码:
Clear

Set Delete on && 更改此设置,再执行一次看看结果 :)
Set Exact Off
Set Ansi Off

Create Table TestTable (pk I Autoinc, Sometext C(20))
Insert Into TestTable (Sometext) Values ("One")
Insert Into TestTable (Sometext) Values ("Two")
Insert Into TestTable (Sometext) Values ("Three")

= Sys(3054,1)

Select Sometext, pk From TestTable Where Upper(Sometext) = "ONE" into cursor crsResult
?

Select TestTable
Index on Upper(Sometext) tag Sometext
Set Order To

Select Sometext, pk From TestTable Where Upper(Sometext) = "ONE" into cursor crsResult
?

Select TestTable

Index on Deleted() tag deleted
Set Order To

Select Sometext, pk From TestTable Where Upper(Sometext) = "ONE" into cursor crsResult

2017-09-10 00:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480573-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.594477 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved