为什么建立索引能加快查询速度,外键又有什么用呢

如题,面试需要

iteye_5246
iteye_5246 还有索引分2中聚集索引和非聚集索引,聚集索引有且只有一个,添加主键自动整张了。那么就是聚集索引,非聚集索引可以有多个,但不能多余249个(好像是249个我也忘了)但外键就可以有多个外键。。格式貌似没有限制。
接近 7 年之前 回复

2个回答

外键--表的外键是另一表的主键, 外键可以有重复的, 可以是空值
索引--该字段没有重复值,但可以有一个空值
外键--用来和其他表建立联系用的
索引--是提高查询排序的速度

kfc_davy
kfc_davy 索引不一定唯一,字段是可以重复的把。pk、uk是唯一的
接近 7 年之前 回复

google下 数据库索引
[url]http://blog.csdn.net/pang040328/article/details/4164874[/url]
[url]http://www.kuqin.com/database/20081110/26423.html[/url]

外键 主要作用是 维护关系正确性 如学生必须引用存在的老师。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
数据库添加索引为什么能加快查询速度
https://blog.csdn.net/qq_15037231/article/details/80539964 数据库建立索引为什么会加快查询速度 首先明白为什么索引会增加速度,DB在执行一条Sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明...
mysql 建立多个索引,加快查询速度
最近有一个接口,客户端接到数据,耗时1秒,一般的常识是 100ms以内 在接口通过exit,断点,一个一个的尝试,发现问题出在一个myqsl查询上 在mysql里用sql查询了一下,发现是0.64s,请龙哥帮忙看了一下,他的建议是建立多个索引,加快查询速度。 案例1: 一. 获取查询情况  explain  sql语句龙哥,发现没有索引 二.查
为什么建立索引以后,查询速度会加快啊?
如题,我对索引还不太理解,希望大家踊跃发言
为什么索引能提高查询速度
如题. 网上很多都是用书的目录举例. 可否讲一下原理?rn我看到一个答案: 说索引是有序的. 然后通过二分查找法来提高查询速度. 是这样吗?
怎样建立分区表加快查询速度?
怎样建立分区表加快查询速度?rn有一个表有1200万数据,都是按年份存放的rn我想把表按年份分割成几个区rnrn请问怎样实现,分好区后又怎样查询?
为什么建立索引,才可以提高查询速度呢
为什么建立索引,才可以提高查询速度呢,各种索引有什么不同呢?
外键建立索引
请问大家在设计表时都在外键上建立索引么?rn是一个外键一个索引好,还是几个外键建立一个索引?(不考虑唯一性,就是索引)
索引为什么能提高查询速度?原理是什么
索引为什么能提高查询速度?原理是什么
一个表如果设置多个索引,能加快查询速度吗?
一个表如果设置多个索引,能加快查询速度吗?
为什么索引能加快查找速度?
为什么索引能加快查找速度?小弟我知有其事,却不明其理?望‘大虾’赐教!rn万分感激!!
MySQL建立了索引,查询速度并没加快
一个20万条记录的表,我在主键上建了索引,rn[img=https://img-bbs.csdn.net/upload/201707/03/1499074597_823876.png][/img]rn但是同样的SQL语句(select * from user where id<100000)建索引前后还是耗时一样,应该如何建索引才能加快查询速度?
数据库查询速度优化 建立索引
怎样优化数据库查询,使其速度更快。 索引的建立。
如何建立索引 提高查询速度
我有一个表company结构如下rnrnID int 自增编号rncompany varchar 公司名rncountry varchar 国别rnproduct varchar 产品名rninfo varchar 公司简介rnuser varchar 登记该公司信息的用户名rnpass varchar 密码rnrn这个表大概有100多万记录, 最经常使用的查询语句rnselect * from company where (country like '国别选择%')and (company like '%任意输入的关键词%' or product like '%任意输入的关键词%' or info like '%任意输入的关键词%')rnrn现在运行查询效率非常低,请问各位此表如何建立索引 才可以极大地提高效率rnrn
建立索引提高查询速度的问题!
我有两个表, users(字段id, cnname, usertype, photo等), contacts表(字段userid, comname等), 其中id与userid关联rn我想实现查询: 可以查询cnname字段值, 也可以查询按contacts表的comname查询(找出公司名包含关键词的用户),rn我写的SQL语句为:rn[code=SQL]select cnname,usertype,photo from users where (m.cnname like '%" & keywords & "%' or EXISTS (select userid from contacts where firmname like '%" & keywords & "%' and userid =m.id)) [/code]rn请教各位,SQL语句是不是还可以优化,如果是这样两个表关联查询的话,应该怎么样建立索引提高查询速度?
建立索引有什么用?
我在一张表中建立索引后,用select *查询出来的结果仍然不是索引的结果(没有达到索引中的排序结果),难道建立索引后还要加order by,那么索引还有什么用?是不是建立索引后,用order by排序速度快?(如果order by与索引的排序方法相同的话)。rnrn另外还有一问,我想建立这样的索引,先按属性1升序排序,再在属性1的相同的每一组数据中按属性2升序排序,如下:rn属性1 属性2rn1 1rn1 2rn1 3rn2 0rn2 1rn3 -1rn要达到这样的效果,是不是需要建立两个索引,第一个索引按属性1排序,第二个按属性2排序?rn那么我的order by 或者应该还要用group by应该怎么写,即SQL语句应该怎么写?
如何建立索引,加快文本检索
怎样利用某种数据结构,然后建立起某种索引,加快文本检索速度,如果有类似于word的查找算法实现最好不过了,求大神指教,谢了
请问建立视图能够加快查询速度吗?
请问建立视图能够加快查询速度吗?
创建View能加快查询速度吗?
由于查询经常要用到Join几个较大的表,所以我想创建一个把几个表join起来的View,但创建View能加快查询速度吗?还是只能简化查询语句?rn多谢!
怎样写sql语句能加快sql查询速度
我有一万条数据,要查出来最好在一分钟内,
怎样写sql语句能加快sql查询速度?
scc.extension AS '分机号',rnjbs.`name` as '姓名',rnjbs.A_dep as '军团',rnCASErnWHEN scc.billsec >= 30 THEN scc.billsecrnELSE 0rnEND AS '有效通时',rndate(scc.start_stamp) AS '日期'rnFROM bi_report.spzc_cdr_cdr sccrnLEFT JOIN bi_report.jmcs_basic_staff jbs on jbs.extension = scc.extension and jbs.`status` = '在职'rnLEFT JOIN crm_customer_profiles ccp on ccp.phone = cast(RIGHT (scc.callee_id_number, 11) AS signed)rnWHERE scc.callee_id_number IS NOT NULL rnAND scc.direction IN ('inbound', 'outbound')rnand scc.start_stamp >= '2018-02-26 00:00:00'rnGROUP BY scc.uuidrnORDER BY scc.start_stamprn每次EXCEL刷新数据就要十几分钟,等不起啊T T.rn大神们给支支招,非常感谢!
索引优点(2):索引是如何加快查询速度?
索引优点中,最重要的就是加快查询速度。 索引有如下3个特点,这3点虽然看上去,句句都是废话,但仔细想想就发现,这3个特点包含的东西,远远超过了3句话所涵盖的。 (1)索引有序 创建索引后,之所以查询速度会快,是由于创建索引时,会按照字段进行排序,如果有多个字段,那么会按照多个字段逐个排序。 在查找的时候,可以用类似二分查找的算法,快速判断要找的值在哪个B树的分支。 (2)索引高度
MySQL 新建数据库、建立索引、建立外键
MySQL数据表创建、 添加索引、创建外键、修改引擎操作。
为什么要建立外键
好像不建立外键也照样能够a join b on a.id=b.idrn建立外键的好处能解释一下吗?
加快表的查询速度!(优化)
一张表300万条数据 平时经常进行更新操作,想让查询速度更快一点,已经有索引了,rn请问可以通过什么手段提高其查询速度?rn我想到了一条 降低HWM 还有别的手段吗rnrn至于SQL语句的问题 rnselect * from a where no=1 and status=1 and s=2;rn这种格式的 因为要限定几个条件 像这个3个段 不可能每个都是加了索引的rnrnrn
如何加快数据查询速度
我有一个表Table字段分别为A,B,C,D,E,F,G,H,I,J,K,L,M,N........,Zrn我以每分钟100条向Table插入数据,Table是实时数据,因为时间一长表中数据量大,当我查询Table表时速度相当的慢。rn请问我应该如何改进Table表。rn
怎么加快查询速度呀?
我用Ado + Sql server作一个医院的管理系统,但是当我选择药品的时候总是很慢(库中的数据大概5千多条吧)为什么?请尽快解决,高分的,真的能解决问题的话300分加上这100分呀
如何加快查询速度?急!
有两个海量数据表分布在两个不同的表空间内,作关联查询太慢了!rnrn请问要怎么样才能提高跨表空间的表查询?或者怎么解决这种问题?rnrn环境信息:rn1、数据库:ORACLE 9i (for linux)rn2、数据存贮介质:磁盘阵列 (1TB)rn
加快ORDER BY 查询速度
以下内容来自mysql5.1手册:http://dev.mysql.com/doc/refman/5.1/zh/optimization.html#explain 想要提高 ORDER BY 的速度,首先要看MySQL能否使用索引而非额外的排序过程。如果不能使用索引,可以试着遵循以下策略:   增加 sort_buffer_size 的值。   增加 read_rnd_buffe...
oracle加快查询速度
平时用查询sql查询时都是简单的select,如果关联关系多了的话就加入Left Join / Right Join /inner join  ,左/右/内等加快表直接的查询和查询逻辑。 但是没加一个左/右/内连接,就会消耗一些数据库的资源,当你联查的表越多时你就会发现你的数据库会查询一个多小时都没有结果。这时候需要在原sql 上加一些速度优化,例如:  SELECT  /*+app
怎样可以加快查询速度?
请问:在SQL server 数据库中的一个表中有大批量的数据,超过500万,请问怎样可以加快查询的速度?开发环境为.net.谢谢!
为什么索引可以提高查询速度
参考:https://stackoverflow.com/questions/1108/how-does-database-indexing-work 以下是关于索引的个人理解: 有这么一个students表: 我们执行一条sql语句:select * from students where name=’老顽童’ 执行结果: 如果我们没有为name字段创建索引,这条sql语句是从...
分页查询速度很慢,如何建立索引呢????望指教。。。谢谢
我的 sql 如下。。。。如何建立索引呢????rnrn[code=Java]public List> findMovieByType(String moviename,String type,String spinnerActor,String spinnerYear,String television,int pageNum,int numSize)rn int m = (pageNum-1)*DbUtil.page_Num; rn List> movieTypeList = new ArrayList>();rn SQLiteDatabase db = dbHelper.getReadableDatabase();rnrn Map params = new HashMap();rn params.put("name", moviename);rn params.put("type", type);rn params.put("actor", spinnerActor);rn params.put("television", television);rn Set fields = params.keySet();rn List values = new ArrayList();rnrn StringBuilder sql = new StringBuilder("select * from Online_All where 1=1");rn for (Object field : fields) rn if(params.get(field)!=null && !params.get(field).isEmpty()&& !"其他".equals(spinnerYear))rn sql.append(" and "+field+" like '%").append(params.get(field)).append("%'");rn rn rn sql.append(" order by year desc limit ?,?");rn values.add(String.valueOf(m));rn values.add(String.valueOf(numSize));rn Cursor cursor = db.rawQuery(sql.toString(),values.toArray(new String[values.size()]));[/code]
sql-front能建立外键吗?
使用Oracle的管理工具PL/SQL,很容易的就建立两张表的主外键,用sql-front就发现无从下手,我知道sql语句可以写出来,但是我就是想问sql-front工具可否建立,有哪位前辈知道的,指点一下。谢谢
这样的外键能建立吗?
能不能一个表有2个外键而且2个外键对应的另一个表的主键是同一字段?
建立多个索引,是否能提高查询速度???online......wait....
我在一个表中,表中有10多万条记录,大概有9个字段,其中五个字段是经常被用来条件查询的,于是我在这5个字段上都建立了索引,是否能提高查询速度呢?索引建多了,是不是不太好?rn
ASP的查询速度如何提高 索引怎样建立
我的查询记录有14000条 大概要8秒 怎样将速度提高rn索引如何建立
求救:提高查询速度,如何建立索引!
听说在查询字段上建立索引可以提高查询速度,比如:我有一个表users,有字段name,address,typeid等,rnrn如何建立索引,是写SQL语句还是直接在设计表里有一个管理索引/键 那里设置?rnrn建立索引后SQL查询语句应该怎么样写?比如:要查询name字段?
在SqlServer 建立索引,查询速度居然没提高???
表名:Emp 里面有100万条数据。rnrn数据库中的列有Code,Name,Age,SexrnCode为自动排序。rnrn查询语句为:rnselect * from Emp where Code>850000 --大概需要3秒查询完rnrn然后我在Code列上建立了簇索引,再查询同样需要 3 秒,我试了好几遍,加不加索引查询的速度都一样啊。郁闷rnrn为什么啊??求高人解答rn
为什么建立索引后查询速度反而变慢了
主键表:Tp rn外键表:Tf1,Tf2,Tf3 rnrnselect tf1.* from tf1 inner join tp on tp.pk = tf1.fkrnselect tf2.* from tf2 inner join tp on tp.pk = tf2.fkrnselect tf3.* from tf3 inner join tp on tp.pk = tf3.fkrnrn都是大数据量,于是为了提高查询性能,在Tf1,Tf2,Tf3分别以外键建立索引,结果查询这三个表时确实快了,但是 在查询Tp时慢了许多,请教大虾这是为什么,如何解决?
为什么建立索引后查询速度还是一样啊??
30万记录rn执行rnsql="select * from it139_pic where title like '%图%' or keyword like '%图%'"rn set rs=server.CreateObject("adodb.recordset")rn rs.open sql,conn,1,1rn rs.closern set rs=nothingrnrn用时2.3秒左右,rnrn在title和keyword上建立一个多列索引再执行还是用时2.3秒左右rnrn这是怎么回事?rn测试了好多查询,只有在排序和查询记录数时提高速度很明显,其它的查询几乎都是一样的
相关热词 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法 c# gmail 发邮件 c# 多层文件