同事在做数据报表的时候,由于查询的表很多,关联的字段很多.所有在查询数据的时候一定要考虑性能和查询速度.
我们查询数据的时候,大家都知道如果有索引都会查询会很快的.如果一个字段是索引,则mysql会建一张索引表.就相当一本书的目录.
select a.name from user a where a.id=1.如果id不是索引,那么查义的时间与id是索引有区别的,这里只有一张表看不出来.
select a.name from user a left join user_temp b on a.id=b.id;
这里如果b.id不是索引,查询的速度两个表的大小决定,如果a表大小为100行,而b表有100000,则查询的时间将是一分多钟(本人测试过),
这我分析一下:由于是左连,a表的每条id会去与b表所有的id比较,结果比较的次数为100*100000次.
如果是这样,select a.name form user a ,user_temp b where a.id=b.id
或select a.name form user a inner joun user_temp b on a.id=b.id
这两条是相等的,查询的时间会比左连接快.但这两条查询她很慢.
原因:a表的每个id,只要在b表找到与他相等的id,就会结束,所以次数少于100*100000
如果b表的id是索引,则查询的速度与上面的比较(根据两个表越大,越能体现出来).
有时候我们都会为一些常要查询条件作为索引.但也要考虑索引会不会失
在做数据报表的时候,查询的条件会很多,关联的表也为很多,子查询也非常的多.
如果两个子查询关联,来查询,那么,查询条件的索引就会失效.那么查询就如上面那样.
select a.name ,b.passwrd form A a left join B b on a.name=b.name.
这条查询,a,b的name我都设置了索引(A表为10000,B表为1000),我查询的时间很慢.
于是用explain select a.name ,b.passwrd form A a left join B b on a.name=b.name.
发现没有索引.也就是说索引失效.最后查看两个表的时候,发现A.name为gbk,B.name为utf-8,于是把b.name改为utf-8.就行.得出.如果比较的查询条件,如果为字符型的时候要注意编码是否一致.
分享到:
相关推荐
在对比MySQL与Oracle数据库性能的讨论中,我们通常会从几个关键方面进行分析,包括但不限于事务处理(INSERT、UPDATE、DELETE)、查询效率(SELECT)、硬件资源利用、SQL语法及优化、存储引擎和架构差异等方面。...
ClickHouse特别适合于数据仓库应用,能够快速执行分析查询。当使用ClickHouse进行数据查询时,例如统计每个广告平台的记录数量,只需要读取与广告平台ID相关的列数据,因此可以大幅度减少I/O消耗,并利用数据压缩...
MySQL是世界上最受欢迎的开源关系型数据库管理系统之一,以其高效、稳定和易用性著称,适用于处理大量数据的存储和查询。 在【压缩包子文件的文件名称列表】中提到的"content"可能包含以下部分: 1. **源码**:...
在实践中优化MySQL,可以考虑诸如合理设计索引、优化查询语句、调整服务器参数、使用缓存、分区表、读写分离等方法。 设置索引但无法使用的情况通常发生在查询条件中有函数或表达式操作,或者在联合索引中,查询...
先下载abiCloud-0.7.0-windows-installer.exe,全自动安装,不过根据网速的快慢,安装过程会自动下载mysql-noinstall-5.1.31-win32.zip和apache-tomcat-6.0.18.zip的配套版本。如果我们需要安装最新的配套版本,可以...
- **不同ISP的服务差异**:在中国电信与网通的服务体验对比中,实习者发现不同的互联网服务提供商(ISP)在网络速度和服务范围上有明显差异,例如访问地理位置相关的网站或服务的速度快慢。 #### 技术细节 - **...
* 运算速度:运算速度主要用以衡量计算机运算的快慢程度,常用百万次/秒来表示。 * 时钟主频:时钟主频是指 CPU 的是钟表频度,决定了计算机速度的高低,主频以 GHz 为单位。 四、操作系统 * Windows 操作系统:...
虽然现代数据库系统更倾向于使用如MySQL、SQL Server或SQLite等关系型数据库,但DBF格式因其简单、小巧且易于处理的特点,在某些特定场景下仍然被使用。DBF文件通常包含表格结构,每行代表一个记录,每列代表一种...
5. 存储与更新:可能使用数据库(如SQLite或MySQL)存储每日的股票信息,以便后续分析和查询。 【Python编程基础】 在实现该项目时,开发者需要掌握Python的基础语法,包括变量、数据结构(如列表、字典)、控制流...
- 快慢表:快表存储最新数据,慢表存储历史数据。 - 集群:使用主服务器读写,从服务器只读,或多个服务器互为主从。 3. **性能调优**: - 确保索引合理。 - 优化SQL查询,避免全连接等低效操作。 - 封装复杂的...
- Elasticsearch的`from/size`分页通过跳过前`from`条记录,然后返回`size`条记录的方式实现分页查询。这种方式可能导致性能下降,特别是在分页很深的情况下。 9. **手写一个LRU缓存** - LRU缓存可以通过哈希表...
- **详细解析**: URL通常由协议、服务器地址、路径和可选的查询参数组成。它是互联网上资源定位的基础。 **题目解析**: URL的含义是统一资源定位器。 #### 15. Java中监听器的实现 - **知识点**: Java中监听器...
- **详细说明**: 索引是提高数据库查询性能的重要手段。 - **创建索引的语句**: - `CREATE TABLE`: 用于创建新的表。 - `ALTER TABLE`: 用于修改现有的表结构,可以添加索引。 - `CREATE INDEX`: 专门用于创建...
"climbing_events"是一个专为输入和计算攀岩比赛结果设计的服务,它提供了一个平台来管理和分析攀岩赛事的数据。这个服务的核心目标是帮助赛事组织者高效地记录参赛者的成绩,同时为观众和参与者提供实时的比赛更新...