mysql疑问,关于查询效率问题 5C

图片说明

如题求解!!」

2个回答

第一个表示在索引字段中使用 = 或者 > < 等可以确定索引范围的条件查找,不用遍历索引字段
第二个表示 必须遍历索引字段 譬如,你的索引字段是字符串你使用like查找

从好到坏的顺序: 2-1-3
3没有用到索引所以效率是最低的,1使用到了索引,但是需要进行回表扫描,即进行2次查询,1次是查询索引取到相应的主键PK,然后根据PK再去表中查找相应的数据,而2 使用到了覆盖索引,不会进行回表扫描,举个列子:你建立了一个复合索引 (code,name) ,然后你查询时: select code,name from user where code='1' 这时就会用到覆盖索引不会进行回表,而当你查询 select code,name,age from user where code='1' 或者select * from user where code='1' 时就会进行回表,所以从好到坏的顺序: 2-1-3

HXNLYW
小葫芦-爬坑记 回复: 你可以自己试一下
12 个月之前 回复
StackTc
StackTc 为什么书上说 1 是最好的 我纳闷了。。。
12 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
mysql语句查询效率问题
表Arnid price name sell_monthrn1 3 可乐 2011-08rn2 3 可乐 2011-08rn3 3 雪碧 2011-08rn4 3 可乐 2011-08rn5 3 可乐 2011-08rn6 3 雪碧 2011-09rn7 1.5 康师傅 2011-09rnrn需要查询的结果为rnrnsell_month 可乐 雪碧 康师傅rn2011-08 12 3 0rn2011-09 0 3 1.5 rnrn[color=#FF0000]我用的是mysql[/color]。请问怎么写sql的效率最高rn另外高手帮忙回复下这个帖子rnhttp://topic.csdn.net/u/20110804/18/6ec4cc21-033d-4799-b015-d64674098c44.html
MYSQL查询效率的问题
/*[16:05:03][ 31 ms]*/ select * from t limit 100,200rn/*[16:05:06][2984 ms]*/ select * from t limit 1999900,2000000rn都是100条数据,为什么后面的时间要多花这么多?rn表t里面有200万条记录,rnrnCREATE TABLE `t` (rn `id` int(11) NOT NULL AUTO_INCREMENT,rn `String` varchar(24) DEFAULT NULL,rn `datetime` datetime DEFAULT NULL,rn PRIMARY KEY (`id`)rn) ENGINE=InnoDB AUTO_INCREMENT=2000001 DEFAULT CHARSET=gb2312rnrn请问:怎么优化可以使2条查询时间差不多?
mysql查询效率问题。
两个表,一个表是三万条数据,另一个表是二十万条数据rn两个表连接后进行检索数据,现在得二十秒,如何能够提高效率rn检索的字段是text类型,使用的是 like '%关键字%'
MySQL查询效率问题
最近在使用python在MySQL中读写数据时遇到了,两个程序插入查询语句格式相同,却效率相差约百倍的问题。 原因是MySQL字段类型为字符串,使用字符串数据条件查询比使用数值型数据效率高的很多,个人估算有百倍, 而我两个程序就使用了两种数据类型,花了两天才找出效率慢的问题。后来去搜了一下相关问题,看到有人做出了 图文对比,效率对比很直观。 博客地址:http://
mysql 查询效率问题
大家好啊,最近遇到点问题,就是 mysql 的 查询优化,很奇怪的 是,同一条语句的条件相同,但是参数值不同,效率差了好远啊,不知道大家有没有遇到过呢?能不能给点解决思路?索引已经建了的。rnrn语句:rnrnSELECT id from job where jobType='0' and province='广东' and city='广州';rnrnSELECT id from job where jobType='0' and province='上海市' and city='上海';
mysql查询效率
mysql查询 where执行顺序为 由左到右 所以要把可过滤最多记录的条件放前面比较好
SQL查询效率的疑问
SQL查询效率的疑问rnSQL2000,请问1语句和2语句效率哪个高?rnrnrn1语句rnif exists(select 1 from purchasedetailrninner join purchasedetail_z on purchasedetail.billid=purchasedetail_z.billid and purchasedetail.itemno=purchasedetail_z.itemno and purchasedetail_z.vipwlztid=0 ------注意这里rnrninner join material_z on material_z.materialid=purchasedetail.materialid and material_z.vipsywlztid=1 rnwhere purchasedetail.billid=@billid and purchasedetail.itemno=@itemnorn )rnbegin rn RAISERROR('请检查物料是否选择状态!%d',16,1)rnROLLBACKrnRETURNrnENDrnrnrnrn2语句rnif exists(select 1 from purchasedetailrninner join purchasedetail_z on purchasedetail.billid=purchasedetail_z.billid and purchasedetail.itemno=purchasedetail_z.itemno rninner join material_z on material_z.materialid=purchasedetail.materialid and material_z.vipsywlztid=1rnwhere purchasedetail.billid=@billid and purchasedetail.itemno=@itemno and purchasedetail_z.vipwlztid=0 ------注意这里rnrn )rnbegin rn RAISERROR('请检查物料是否选择状态!%d',16,1)rnROLLBACKrnRETURNrnENDrnrnrn
mysql 查询效率问题请教一下
从数据库查询完整数据和查询几个列效率一样么?差距大么?有什么方法可以观察到差距?
关于查询效率的问题
SELECT * FROM A WHERE ID = '872918229' 查询用了0.031秒rn rn SELECT * FROM A WHERE ID = 872918229 查询用了40秒rnID VARCHAR2(50)rnrn两者查询效率为什么差这么多rnrnrn
关于select 查询效率问题
我有两个很大的table,环境是 ms sql 2008rn现从两个表中列出几个列 where a.id=b.idrn但是发现速度很慢,2000行资料大概需要5分钟。rnrn请问,改用 inner join效率会高点么?它们是否后台的操作是否完全一样?rn还是需要其他的方法提高性能?rnrn谢谢了
关于查询效率的一个问题
数据库里面有很多很多信息,但是默认只要显示最新一天的信息,怎样提高查询的速度呢?
关于数据查询效率的问题
1个数据库(Acess或SQL Server),保存有的1天内的某些历史数据,1秒钟一条(一天最多86400条)。除时间戳、序号等外,共有50个字段,切为单精度型。rn现在的问题是,欲以一定的时间间隔读取数据库中指定(一个或多个)字段的值,怎样才能做到最快。rn比如每隔100.4秒读取一次,即是指读取数据库中第1条、第100条、第201条、301条、第402条……rn这个需求是在绘制历史数据曲线时产生的。
wpf linq mysql 查询效率问题
本机测试3秒,连服务器数据库6-7秒 ,请假下有没有优化的可能rnrn页面有3个图表,这个方法是获取数据的rnrnrnpublic static PictureDataModel GetAffairInfoByMonthLineIdSelectedAreaChildren(DateTime firstDay, int lineId)rn rn var lastDay = firstDay.AddMonths(1);rnrn var selectedArea = Storage.Areas.FirstOrDefault(p => p.AreaId == Storage.SelectedAreaId);rn //获取所有子节点rn var childrenAreaId = AreaHelper.GetGrandChild(selectedArea).Select(x => x.AreaId);rn //获取第一所有子节点rn var childrenArea = AreaHelper.GetMyChildrenArea(Storage.SelectedAreaId);rn//以上都是读缓存数据下面是连接数据库rn _db = new YmsDb();rnrn if (Storage.SelectedAreaId == Storage.MyArea.AreaId)rn rn var areaCount = from ai in _db.AffairsInforn join a in _db.Affairs on ai.AffairId equals a.AffairIdrn join w in _db.Window on a.WindowId equals w.WindowIdrn where Storage.MyChildrenAreaId.Contains(ai.AreaId) && w.AffairLineId.Equals(lineId) &&rn ai.LastTransTime > firstDay && ai.LastTransTime < lastDayrnrn group ai by ai.AreaIdrn into grn select new Id = g.Key, ValueInt = g.Count() ;rnrn var columnData = (from item in childrenArearn let children = AreaHelper.GetGrandChild(item).Select(x => x.AreaId)rn let count = areaCount.Where(p => (children.Contains(p.Id))).Select(p => p.ValueInt).DefaultIfEmpty().Sum()rnrn select new ChartDataClassrn rn Id = item.AreaId,rn XValue = item.AreaName,rn YValue = (int?)countrnrn ).ToList();rnrn var pieCount = from ai in _db.AffairsInforn join a in _db.Affairs on ai.AffairId equals a.AffairIdrn join w in _db.Window on a.WindowId equals w.WindowIdrn where Storage.MyChildrenAreaId.Contains(ai.AreaId) && w.AffairLineId.Equals(lineId) &&rn ai.LastTransTime > firstDay && ai.LastTransTime < lastDayrnrn group ai by ai.AreaIdrn into grn select new Id = g.Key, ValueInt = g.Count() ;rnrn var pieData = (from item in childrenArearn let children = AreaHelper.GetGrandChild(item).Select(x => x.AreaId)rn let count = pieCount.Where(p => (children.Contains(p.Id))).Select(p => p.ValueInt).DefaultIfEmpty().Sum()rnrn select new ChartDataClassrn rn Id = item.AreaId,rn XValue = item.AreaName,rn YValue = (int?)countrnrn ).ToList();rnrn var affairInfoHourCount = from ai in _db.AffairsInfo.AsEnumerable()rn join a in _db.Affairs on ai.AffairId equals a.AffairIdrn join w in _db.Window on a.WindowId equals w.WindowIdrn where Storage.MyChildrenAreaId.Contains(ai.AreaId) && w.AffairLineId.Equals(lineId) &&rn ai.LastTransTime > firstDay && ai.LastTransTime < lastDay && ai.LastTransTime.HasValuern group ai by ai.LastTransTime.Value.Hourrn into grn select new Hour = g.Key, ValueInt = g.Count() ;rnrnrn var lineData = WorkTimer.Select(hour =>rn new ChartDataClassrn rn XValue = hour + ":00",rn YValue = affairInfoHourCount.Where(p => p.Hour == hour).Select(p => p.ValueInt).Sum()rn ).ToList();rnrn var countAllTime = affairInfoHourCount.Select(p => p.ValueInt).DefaultIfEmpty().Sum();rnrn var countOnWorkTime = (int)lineData.Sum(x => x.YValue.GetValueOrDefault());rnrn var chartDataOtherTime = new ChartDataClassrn rn XValue = "其他时段",rn YValue = countAllTime - countOnWorkTimern ;rnrn lineData.Add(chartDataOtherTime);rnrn var obj = new PictureDataModel();rn obj.ColumnData = columnData;rn obj.PieData = pieData;rn obj.LineData = lineData;rn rnrn return obj;rn
关于Nvarchar查询效率问题。
根据Varchar型字段login Select数据时rn原来没有指定类型SqlDbType.VarCharrncomd.Parameters.Add("@login",login.Text.Trim());rn后来指定了DB类型SqlDbType.VarCharrncomd.Parameters.Add("@login",SqlDbType.VarChar);rncomd.Parameters["@login"].Value = login.Text.Trim();rn为什么后一种的效率比前一种快几十倍啊(试验过),希望高手指点。rn-----rn还有是不是根据Nvarchar型字段查询的效率,远低与varchar型啊?
mysql 查询效率的一个怪问题
两张表分别有10多个字段,由外键关联rnA:rnidrnnamernvisit_numrn....rnbid (外键关联到B:表的id)rnrnB:rnidrnnamern....rnrn其中A表 有8万多条数据 B表只有4000多条数据。表A id,visit_num 表B id 都有建索引rnrnsql1:rnselect a.id,b.id,a.name,b.name from A a inner join B b on a.aid = b.bid order by a.visit_num desc limit 100,5rnrnsql2:rnselect a.id,b.id,a.name,b.name,a.xxx ...(其他20几个字段) from A a inner join B b on a.aid = b.bid order by a.visit_num desc limit 100,5rnrn在我本地的mysql 5.0.51b-community-nt-log rn上执行 sql1 需要10秒,而 sql2 只要1秒rnrn而在服务器上的mysql 5.0.51a-log 刚好相反,执行sql1需要1秒 而sql2 需要10秒 rn两个数据库里的数据完全一样。rnrn请问这个如何解释啊?谢谢!rnrn
关于查询效率的问题!
比如股票信息,每只股票每日有一条记录。rnrn将所有股票的所有记录保存到一个表里面好,还是每个股票做个表好。rnrn因为两只股票的记录是不同同时要查询的,查询时都是查一个股票的每日记录。rnrn哪种做法效率好一些?rn
关于hibernate查询效率的问题!
action的代码:rnSiInformService siInformService = (SiInformService) getWebApplicationContext()rn .getBean("siInformService");rn List totalList = siInformService.getTotalByDepAndDate(strDepid, strFirstDayOfMonth, strLastDayOfMonth);rn rn request.setAttribute("totalList", totalList);rn request.setAttribute("rootOrgList", depList);rn return actionMapping.findForward("total.init");rnrnSiInformService接口:rnpublic abstract SiTotalVo getTotalByDepAndDate(String as_depid,String as_start,String as_end);rnpublic abstract List getTotalByDepAndDate(String as_depid[],String as_start,String as_end);rnrnpublic SiTotalVo getTotalByDepAndDate(String asDepid, String asStart, String asEnd)rn rn // TODO 自动生成方法体rn String strStatus = "";rn String strDepname = "";rn rn //单个部门在给定时间段得通知单列表rnList list1 = this.siSorInformDeptDao.getRecordsByDepidAndDate(asDepid, rn InformSorType.RECIVE_INFORM, asStart, asEnd);rn rn //本单位已经接访的记录列表即状态=4rn strStatus = InformSorStatus.SIGNIN_INFORM_ALREADY;rnList list2 = this.siSorInformDeptDao.getRecordsByDepidAndDateAndStatus(asDepid, InformSorType.RECIVE_INFORM, asStart, asEnd, strStatus);rn rn //本单位未接访的记录列表即状态<>4rnString strWhere = " and (model.sorDept=" + asDepid + " and model.sorType=" rn+ InformSorType.RECIVE_INFORM + ") and ("rn+ " TO_CHAR(model.sendDate,'yyyy/MM/dd')>='" + asStartrn+ "' and " + " TO_CHAR(model.sendDate,'yyyy/MM/dd')<='" + asEndrn+ "') and (model.sorStatus<>" + strStatus + ") order by model.id desc ";rnList list3 = this.siSorInformDeptDao.getRecordsByAnyWhere(strWhere);rn rn //本单位未按要求接访记录列表(签到状态为4的并且签到时间晚于要求接访时间) or (签到状态为4的且指定接访人未到原因字段不为空的。)rnList list4 =this.siSorInformDeptDao.getNotAskRecievedByDepidAndDateAndStatus(asDepid, InformSorType.RECIVE_INFORM, asStart, asEnd, InformSorStatus.SIGNIN_INFORM_ALREADY);rnint iSendNums = list1.size(), iRecievedS = list2.size(), rn iNotRecievedS = list3.size(), iNotAskRecievedS = list4.size();rn double dRecievedPersent = 0d;rn double dNotRecievedPersent = 0d;rn double dNotAskRecievedPersent = 0d;rn if (iSendNums > 0) rndRecievedPersent = (double) iRecievedS / (double) iSendNums;rndNotRecievedPersent = (double) iNotRecievedS / (double) iSendNums;rndNotAskRecievedPersent = (double) iNotAskRecievedS / (double) iSendNums;rn rn rn rn SiTotalVo siTotalVo = new SiTotalVo();rn siTotalVo.setStrDepid(asDepid);rn rn IOrgManagerService orgService = this.getOrgManagerService();rn strDepname = orgService.getOrgById(asDepid).getName();rn siTotalVo.setStrDepname(strDepname); rn siTotalVo.setIsendnums(iSendNums);rn siTotalVo.setIrecievedS(iRecievedS);rn siTotalVo.setInotRecievedS(iNotRecievedS);rn siTotalVo.setInotAskRecievedS(iNotAskRecievedS);rn siTotalVo.setDrecievedPersent(dRecievedPersent);rn siTotalVo.setDnotRecievedPersent(dNotRecievedPersent);rn siTotalVo.setDnotAskRecievedPersent(dNotAskRecievedPersent);rn rn return siTotalVo; rn rn rn rn rn rnpublic List getTotalByDepAndDate(String[] asDepid, String asStart, String asEnd)rn rn List retList = new ArrayList();rn String strDepid = "";rn SiTotalVo siTotalVo;rn int iDepArrSize = asDepid.length;rn rn int iSendNumsTotal = 0; //通知数量rn int iRecievedSTotal = 0; //接访数量rn int iNotRecievedSTotal = 0; //未接访数量rn int iNotAskRecievedSTotal = 0; //未按要求接访数量rn double dRecievedPersentTotal = 0; //接访率rn double dNotRecievedPersentTotal = 0; //未接访率rn double dNotAskRecievedPersentTotal = 0; //未按要求接访率 rn rn try rn if (iDepArrSize < 1) rn logger.debug("部门数组长度为0,返回空值!");rn return null; rn else rn for (int i = 0; i < iDepArrSize; i++) rn siTotalVo = new SiTotalVo();rn strDepid = asDepid[i];rn rn siTotalVo = getTotalByDepAndDate(strDepid, asStart, asEnd);rn rn //以下计算汇总项目rn iSendNumsTotal+=siTotalVo.getIsendnums();rn iRecievedSTotal += siTotalVo.getIrecievedS();rn iNotRecievedSTotal += siTotalVo.getInotRecievedS();rn iNotAskRecievedSTotal += siTotalVo.getInotAskRecievedS();rn rn retList.add(siTotalVo); rn rn rndRecievedPersentTotal= (double) iRecievedSTotal / (double) iSendNumsTotal;rndNotRecievedPersentTotal= (double) iNotRecievedSTotal / (double) iSendNumsTotal;rndNotAskRecievedPersentTotal = (double) iNotAskRecievedSTotal / (double) iSendNumsTotal;rn rn //构造汇总对象rn siTotalVo = new SiTotalVo();rn siTotalVo.setStrDepid("0"); //0为全部单位汇总记录rn siTotalVo.setStrDepname("总计");rn siTotalVo.setIsendnums(iSendNumsTotal);rn siTotalVo.setIrecievedS(iRecievedSTotal);rn siTotalVo.setInotRecievedS(iNotRecievedSTotal);rn siTotalVo.setInotAskRecievedS(iNotAskRecievedSTotal);rn siTotalVo.setDrecievedPersent(dRecievedPersentTotal);rn siTotalVo.setDnotRecievedPersent(dNotRecievedPersentTotal);rn siTotalVo.setDnotAskRecievedPersent(dNotAskRecievedPersentTotal);rn rn retList.add(siTotalVo);rn rn return retList;rn catch (RuntimeException re) rn logger.error("获得统计数据失败!", re);rn throw re;rn rn rn rn
关于查询效率的问题!!
我定义一个表变量@table_trace,和一个临时表#table_tracernrn表中的内容相同rnrn同样的执行下列语句rnwith cte as (select row=row_number()over(order by projcode,cu_date),* from #table_trace)rnrnselect *rnfrom rn(rnselect * from cte where actionname='发核查指令')t1 rnleft join rn(select * from cte where row in(select row+1 from cte where actionname='发核查指令'))t2rnon t1.row=t2.row-1 rnrn执行以后以后的结果就是#table_trace比@table_trace快很多很多rnrn但如果用临时表,那样在多人同时执行查询的时候又会有冲突说表存在rnrnrn怎么才能兼顾既高效 又可以同时查询?
关于数据查询效率问题
下边的是sql server帮助中的东西,请大家说说这几种联结,那种效率高?rn:rn查询所选的行首先通过 FROM 子句联接条件进行筛选,其次由 WHERE 子句搜索条件筛选,然后由 HAVING 子句搜索条件筛选。可以在 FROM 或 WHERE 子句中指定内联接而不影响最后结果。rnrn然而,根据联接条件是在 FROM 子句中还是在 WHERE 子句中,外联接条件与 WHERE 搜索条件的交互可能会不同。因此,建议不要在 WHERE 子句中指定 Transact-SQL 外联接,这种方法不再写入文档并将在以后的版本中除去。rnrn例如,下面两个查询对 SELECT 23 行指定左向外联接,用以显示书名标识号、书名以及已出售的书的数量:rnrn-- Join in WHERE clause.rnUSE pubsrnSELECT t.title_id, t.title, s.qtyrnFROM titles AS t, sales AS srnWHERE t.title_id *= s.title_idrnrn-- Join in FROM clause.rnUSE pubsrnSELECT t.title_id, t.title, s.qtyrnFROM titles AS t LEFT OUTER JOIN sales AS srn ON t.title_id = s.title_idrnrnrn
关于SQLServer2005的查询效率问题
小弟现在要做一个查询,存放主要信息的表中的数据量在一千万左右rnrn主要结构如下rnrnID(LONG), CONTENT(VARCHAR), USERCODE(VARCHAR) , SUBMITTIME(DATETIME)rnrn主键自增 用户数据 用户编码 提交时间rnrn我现在要做的工作是rnrn写一个查询SQL查询一个用户在某段时间内提交的数据,当然,如果数量多的话必然是分页查询rnrn我的SQL 先去查询了表中的复合要求的记录,然后用这部分记录去和其他几个表关联,取得相关信息rnrn比如这样rnrn[code=SQL]rnrnSELECT A.CONTENT, B,USERNAMErnrnFROM rnrn(rnrnSELECT CONTENT , USERCODE, SUBMITTIME FROM 表 WHERE USERCODE = '' AND SUBMITTIME BETWEEN ‘时间1' AND '时间2'rnrn) A , USERINFO BrnrnWHERE A.USERCODE = B.USERCODErnrnrn[/code]rnrn表中除了主键字段有索引外,DBA给建的索引有 USERCODE字段建了一个不唯一非聚集的索引rnrnSUBMITTIME字段也建立的不唯一非聚集索引rnrn但是,问题来了,我如果不对提交时间进行过滤,只使用USERCODE字段做过滤,也就是查询出该用户的所有记录rnrn这个时候我发现比 查询该用户一个时间段的所有记录要快rnrn感觉很明显,前者需要不到1秒的时间,后者就可以感觉到明显的停顿,要等4-5秒的样子rnrn但是DBA不是给建立了两个索引吗?我去问DBA,他给我解释不清rnrn他给我查看了2005给做的执行计划,从执行计划上看,效果应该是反过来的rnrn但是事实上不是,最终DBA找到了一个认为说的过去的理由rnrn他说,是因为我选择的用户特殊,有可能这个用户数据的数据存储位置比较特殊,所以快了。rnrn但是我不认同这个观点,rnrn因为第一,他拿不出证据证明测试用户的数据存储位置特殊rnrn第二,我用5个测试用户测试这个SQL结果都是和执行计划给出的速度比相反,难道我这5个用户的数据都特殊?rnrn这个查询领导给布置的工作就是要查询效率高,不能让用户感觉长时间的等待rnrn众位高手谁指导指导我吧。rnrn
关于一个查询效率的问题
一个字段中有30,31,47,28,48 等等用逗号来分隔的字符串rnrn现在有一个查询字符,SearchKey='30,28' (列出字段中包含30 和 28的数据)rnrn怎样以最快的速度列出表中合符条件的数据 rnrn 如果这种办法效率不高的话,请教新数据结构!谢谢
关于分区表查询效率问题
现有一表A,为分区表。rn 字段如下rn id number primary(唯一索引)rn pid varchar2 创建索引rn xxx ...rn xxx ...rn ... ... rnrn 现在问题是这样,2条sql语句:rn 1. select * from A partition(分区表名) where pid='xxx' order by lsh //查询速度很慢很慢rn 2. select * from A partition(分区表名) where pid='xxx' // 不加order by lsh ,查询速度可以。我想问下为什么按lsh排序会这么慢。rn
关于查询效率的简单问题
请问对表进行联合查询时是尽量把查询写在一个SQL语句中速度快还是分开来写速度快?rnrn比如:rn第一种写法:rnselect a.name from father a,son b where a.id=b.father_id and b.id=100rn第二种写法:rndeclare @fatherId intrnselect @fatherId=b.father_id from son where b.id=100rnselect name from father where id=@fatherId rnrn当然实际情况肯定比这个例子复杂的多,我觉得如果效率一样或相近的情况下应该分开来写,因为这样逻辑上清楚写,否则看那么多表作管联查询的SQL是很痛苦的一件事,找bug都不好找,各位的意见呢?rnrn当然效率是第一位的
关于asp.net的查询效率问题
如果有个几万条记录的表, 进行返回1条纪录的查询,是用存储过程/函数快呢还是把表读到rnapplication中的dataset,用全局变量访问快?rnrn Web Server对DataSet和Sql server对表的查询那个效率高,占资源少?rnrn 把几万条数据的表放到DataSet中好不好?rnrn表的数据宽度不大。
关于查询效率问题
select * from t_BOS_BlxxEntry where fbljg=1000rnrnselect * from t_BOS_BlxxEntry where right(fnumber,3)='400'rnrnrnt_BOS_BlxxEntry 表中假设有上亿条记录,那么这两条查询语句的效率那个更高一些,要如何测试,fbljg=1000 是数值型,right(fnumber,3)='400'是字符型,由类似“100.211.400”这样的字符组成,只是这样的字符进行拆分查询。rnrn
关于查询效率
问题一.rn表达式1:select a.*,b.* from a inner join b on a.id=b.idrn表达式2:select a.*,b.* from a,b where a.id=b.idrn两个表达式哪个效率高?rn问题二.rn以上两个表达式查询后的结果会出现如下情况:rna.name b.namern------------------rnname 2 names 2rnname1 2 names 2 '这行的names 2 并不存在数据!如果不想使用默认上行的数据应该如何解决?rn多谢!
mysql查询效率优化问题
大家好,现有一问题真心求教,不慎感激rn详细如下rn[code=sql]CREATE TABLE `tb_tree` (rn `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',rn `t` INT(11) NOT NULL COMMENT 't',rn `lt` INT(11) NOT NULL COMMENT 'latency',rn `ts` BIGINT(13) NOT NULL COMMENT 'Millisecond timestamp',rn `s` VARCHAR(255) NOT NULL COMMENT 's',rn `lb` VARCHAR(255) NOT NULL COMMENT 'label name',rn `rc` VARCHAR(255) NOT NULL COMMENT 'response code ',rn `rm` VARCHAR(2550) NOT NULL COMMENT 'response message',rn `tn` VARCHAR(255) NOT NULL COMMENT 'thread name',rn `dt` VARCHAR(255) NOT NULL COMMENT 'Content-Type ',rn `bc` INT(11) NOT NULL COMMENT 'receiveBytes',rn `assertion_name` VARCHAR(255) NULL DEFAULT NULL COMMENT 'raname',rn `assertion_failure` VARCHAR(255) NULL DEFAULT NULL COMMENT 'rafailure',rn `assertion_failure_message` VARCHAR(255) NULL DEFAULT NULL COMMENT 'assertion message',rn `ng` INT(11) NOT NULL COMMENT 'number of active thread in the thread group',rn `na` INT(11) NOT NULL COMMENT 'number of active thread in the test case',rn `tgname` VARCHAR(255) NULL DEFAULT NULL COMMENT 'thread group name',rn `machine_ip` VARCHAR(255) NULL DEFAULT NULL COMMENT 'the agent ip',rn `response_data` LONGTEXT NULL COMMENT 'responsedata',rn `sent_bytes` INT(11) NULL DEFAULT NULL COMMENT 'sentBytes',rn `num_threads` INT(10) NULL DEFAULT NULL,rn `ramp_time` INT(10) NULL DEFAULT NULL,rn `script_name` VARCHAR(250) NULL DEFAULT NULL,rn `url` VARCHAR(250) NULL DEFAULT NULL,rn PRIMARY KEY (`id`),rn INDEX `ts` (`ts`),rn INDEX `t` (`t`),rn INDEX `ts_lb` (`ts`, `lb`)rn)rnCOMMENT='this is results of one test xml data'rnCOLLATE='utf8_general_ci'rnENGINE=InnoDB;[/code]rn我的查询语句rn[code=sql]select avg(t),floor(ts/1000),lb rn from tb_tree rn where ts<>0 rn group by floor(ts),lb;[/code]rnrn通过explain看到rn[img=https://img-bbs.csdn.net/upload/201305/29/1369796024_966995.jpg][/img]rnrn对于类似这种,需要在group by后面使用round,floor等聚合函数的情况下,我始终无法使用到索引,怎样提高查询效率了?rnrn另外再请问一下,我在一个存储过程中使用如上的sql语句,将结果保存在另外一张结果表中,因为源数据上亿,会莫名巧妙的出现该存储过程的进程在进过20来分钟后自动消失掉,可能会是什么原因造成的了?rn
mysql in 和exists查询效率总结
看到网上好多的文章,关于in 和exists,我自己专门去校验了一下,自己通过存储过程,循环增加了10万条数据, //创建表 drop table if exists tb_test; create table tb_test( id int PRIMARY key auto_increment not null, name varchar(20) ) //存储过程 del
mysql in 查询效率慢优化
mysql> select * from abc_number_prop where number_id in (select number_id from abc_number_phone where phone = '82306839'); 为了节省篇幅,省略了输出内容,下同。 67 rows in set (12.00 sec) 只有67行数据返回,却花了12秒,而系统中可能同
mysql查询效率比较
有一个表用来存储N多文章,每篇文章都有一个id(主键)和一个类别属性class_id(已建索引),现在我知道一篇文章的id,想找到表中所有与之类别相同的文章,可以有三种sql来查询rn1、sql1 = "select class_id from t_articles where id=$id";rn 先查询得到class_idrn sql2 = "select id from t_articles where class_id=$class_id"rn2、sql = "select id from t_article where class_id=(select class_id from t_articles)"rn3、sql = "select t1.id from t_articles as t1,t_articles as t2 where t1.class_id=t2.class_id and t2.id=$id"rnrn请问这三种方法中哪种查询效率最高呢
mysql 怎样优化查询效率
目前数据量是30W,查询就要15秒了[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/18.gif][/img]rnrn[img=https://img-bbs.csdn.net/upload/201705/07/1494164457_356964.png][/img]rn[img=https://img-bbs.csdn.net/upload/201705/07/1494164552_57700.png][/img]
MYSql分页查询效率提高
[code=sql]rnCREATE TABLE `goods` (rn `UrlId` char(100) CHARACTER SET utf8 NOT NULL,rn `Title` varchar(100) CHARACTER SET utf8 DEFAULT NULL,rn `CreateTime` char(30) CHARACTER SET utf8 DEFAULT NULL,rn PRIMARY KEY (`UrlId`)rn)rn[/code]rn上面是我表格的结构,我的程序是用来做搜索引擎的,UrlId用来存储网址,title存标题,UrlId网址是主键唯一,rn因为是做搜索引擎的缘故,所以数据极其庞大,千万以上吧,之前分页看到都是用Limite,但是听说数据超大的时候回产生效率极其低下的情况,我看到其他解决方案就是rn[code=sql]rnSELECT * FROM goods WHERE id >= (SELECT id FROM table LIMIT 1000000, 1) LIMIT 10; rn[/code] 都是有一个对那个自增的ID进行限制,可是我的主键是UrlId 是字符串,不是普通的ID数字,所以这个有点乏力,希望大家能帮忙写出解决方案(因为我擅长前台,而且之前是sqlserver 的,所以代码不擅长,最好有具体的代码,谢谢了。)
mysql查询效率低下的原因
用Perl插入数据到mysql发现查询某一ip是否在IP表中存在耗时特别多,代码如下: [code=&quot;php&quot;] $sql_checkIp = &quot;select ip_id from `ip` where ip_address = '$ip_address'&quot;; $sth = $dbh-&gt;prepare($sql_checkIp); $sth-&gt;execute...
关于mysql的order by的疑问。
select a, b, c form tb where ... order by [color=#FF0000]id[/color] asc limit 0,100;rnrnselect [color=#FF0000]id[/color], a, b, c form tb where ... order by [color=#FF0000]id[/color] asc limit 0,100;rnrnrn这两个sql返回的数据为什么是不一样的?
关于mysql事务死锁的疑问
是这样的,我在程序里关闭了自动提交,然后当两个update语句完成之后,还没有commitrn这个时候我拔了我的网线,然后让程序继续运行,然后出错后发现mysql的那句update一直处于等待执行的状态rnrn我想问的是,像这种情况,除了手动杀掉被锁的语句,还有没有其他办法?rn这种程序应该是处理不了的吧?那么有没有什么设置可以让mysql过一段时间,比如10秒自动把锁释放呢?
关于MYSQL事务的疑问
[code=php] mysql_query("BEGIN"); rn rn $result=mysql_query("UPDATE vip set time='".$intime."'"." where user='".$uid."' and ". "setype='".$usetype."'");rn if (!$result)rn rn echo "///0///";rn mysql_query("ROLLBACK"); rn return;rn rnrn$result=mysql_query("UPDATE addcard set time=curdate()".",userw='".$uid."',sev='".$usetype."' where card='".$card."'");rn if (!$result)rn rn echo "///0///";rn mysql_query("ROLLBACK"); rn return;rn rn mysql_query("ROLLBACK");[/code]rnrn刚学PHP,上面的代码执行后,按照个人的理解,应该两条两条语句都没能修改数据库,但是执行后去查看数据库,发现第一条确实没修改数据库,但是第二条语句去真实修改了,不知是不是我的代码有问题,如果是的话,希望高手们说下,代码应该怎样修改,才能让两条语句保持一致性,即要么都修改数据,要么都不修改
关于mysql和sqlserver的疑问
请问mysql可以象sqlserver那样用视图和存储过程吗?rnmysql有什么和sqlserver不一样的特点,请指教,谢谢rn还有,我建在sqlserver上的表怎么能自动导入到sqlserver中去,谢谢rn
关于MYSQL最大连接数的疑问
参数max_connections默认是100,小弟的疑问是,这100是指的一百个用户登录数据库(类似100个root账号),还是指100个不同的客户端?rnrn我的程序里使用的是root用户,那么每个BS的浏览器客户端发出的请求都会使用root账号去登录数据库,那么这算一个连接还是多个?
关于MYSQL用户权限的疑问
我想增加个用户tanwei,但是这用户只能访问这特定数据库test02 我是如下操作的,可是错了,哪位帮我看看,谢谢了。rn rn [code=SQL] mysql>grant select,update,insert,delete on test02.* to tanwei@192.168.88.234 identified by "1234567";rn mysql>update user set host = '%' where user = 'tanwei';//将host字段的值改为%,可在任何客户端机器上能以tanwei用户登录到mysql服务器[/code]rn如上,建立用户tanwei,增加了他的权限rnrn [code=SQL] # mysql -u tanwei -prn //输入密码。。。。。。rn # show databases;[/code]rn 可是并没有显示test02,现在这用户还是访问不了test02数据库。现在用这tanwei用户登陆进去,里面连mysql这系统表也不能访问。rnrn 哪位高手指点我下,谢谢了 rn 谢谢!~~~~rnrnrnrnrn
关于sql server查询效率问题
如果一张表有上百万条的记录,用什么方法能提高它的查询速度呢?
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview