数据库查询优化小技巧

杭电oj2023题题目详解(Java版) 杭电oj2023题详解 阅读详情
数据库查询优化小技巧
一个有效的优化与不优化或错误优化之间的差别,可能可以让你的程序执行速度差别几十倍甚至几百倍。

(本文不太适用于数据库高手观看,如有错误,欢迎不批评指正。)

以下 word 代表查询字符串,tablename代表数据表名,column代表字段名


===========================================================


技巧一:

问题类型:ACCESS数据库字段中含有日文片假名或其它不明字符时查询会提示内存溢出。

解决方法:修改查询语句

sql="select * from tablename where column like '%"&word&"%'"
改为
sql="select * from tablename"
rs.filter = " column like '%"&word&"%'"


===========================================================


技巧二:

问题类型:如何用简易的办法实现类似百度的多关键词查询(多关键词用空格或其它符号间隔)。

解决方法:

'//用空格分割查询字符串
ck=split(word," ")
'//得到分割后的数量
sck=UBound(ck)

sql="select * tablename where"

在一个字段中查询
For i = 0 To sck
SQL = SQL & tempJoinWord & "(" & _
"column like '"&ck(i)&"%')"
tempJoinWord = " and "
Next

在二个字段中同时查询
For i = 0 To sck
SQL = SQL & tempJoinWord & "(" & _
"column like '"&ck(i)&"%' or " & _
"column1 like '"&ck(i)&"%')"
tempJoinWord = " and "
Next


===========================================================


技巧三:大大提高查询效率的几种技巧

1. 尽量不要使用 or,使用or会引起全表扫描,将大大降低查询效率。

2. 经过实践验证,charindex()并不比前面加%的like更能提高查询效率,并且charindex()会使索引失去作用(指sqlserver数据库)

3. column like '%"&word&"%' 会使索引不起作用
column like '"&word&"%' 会使索引起作用(去掉前面的%符号)
(指sqlserver数据库)

4. '%"&word&"%' 与'"&word&"%' 在查询时的区别:
比如你的字段内容为 一个容易受伤的女人
'%"&word&"%' :会通配所有字符串,不论查“受伤”还是查“一个”,都会显示结果。
'"&word&"%' :只通配前面的字符串,例如查“受伤”是没有结果的,只有查“一个”,才会显示结果。

5. 字段提取要按照“需多少、提多少”的原则,避免“select *”,尽量使用“select 字段1,字段2,字段3........”。实践证明:每少提取一个字段,数据的提取速度就会有相应的提升。提升的速度还要看您舍弃的字段的大小来判断。

6. order by按聚集索引列排序效率最高。一个sqlserver数据表只能建立一个聚集索引,一般默认为ID,也可以改为其它的字段。

7. 为你的表建立适当的索引,建立索引可以使你的查询速度提高几十几百倍。(指sqlserver数据库)


===========================================================


以下是建立索引与不建立索引的一个查询效率分析:

Sqlserver索引与查询效率分析。

表 News

字段
Id:自动编号
Title:文章标题
Author:作者
Content:内容
Star:优先级
Addtime:时间

记录:100万条
测试机器:P4 2.8/1G内存/IDE硬盘

=======================================================

方案1:
主键Id,默认为聚集索引,不建立其它非聚集索引
select * from News where Title like '%"&word&"%' or Author like '%"&word&"%' order by Id desc

从字段Title和Author中模糊检索,按Id排序
查询时间:50秒

=======================================================

方案2:
主键Id,默认为聚集索引
在Title、Author、Star上建立非聚集索引
select * from News where Title like '"&word&"%' or Author like '"&word&"%' order by Id desc

从字段Title和Author中模糊检索,按Id排序
查询时间:2 - 2.5秒

=======================================================

方案3:
主键Id,默认为聚集索引
在Title、Author、Star上建立非聚集索引
select * from News where Title like '"&word&"%' or Author like '"&word&"%' order by Star desc

从字段Title和Author中模糊检索,按Star排序
查询时间:2 秒

=======================================================

方案4:
主键Id,默认为聚集索引
在Title、Author、Star上建立非聚集索引
select * from News where Title like '"&word&"%' or Author like '"&word&"%'

从字段Title和Author中模糊检索,不排序
查询时间:1.8 - 2 秒


=======================================================

方案5:
主键Id,默认为聚集索引
在Title、Author、Star上建立非聚集索引
select * from News where Title like '"&word&"%'
或
select * from News where Author like '"&word&"%'

从字段Title 或 Author中检索,不排序
查询时间:1秒

==============================================

Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=658861

人工智能面试总结-Python B站:啥都会一点的研究生 公众号试读:啥都会一点的研究生 目录说说Python程序运行过程?说说Python的作用域?说说Python的数据结构?说说Python中可变与不可变类型?说说进程与线程?说说Python中的多线程?说说Python中的多进程?说说Python互斥锁与死锁?说说Lambda?说说Python的深拷贝与浅拷贝?说说Python多线程是否能用多个CPU,为什么?说说Python垃圾回收机制?说说Python里的生成器?说说迭代器与生成器的区别?说说Python 列表的 del,rem. 阅读详情

相关推荐

解决Android UVCCamera stopPreview 报错 崩溃 闪退 问题

在使用libuvccamera库的UVCCamera时,经常在调用stopPreview关闭预览的时候,app直接崩溃闪退了,经过综合各种修改源码的方案,已解决这个问题,以下请参考: 首先找到android_usbfs.c,linux_usbfs.c两个原文件,在两个文件中都可以找到这段代码,按如下示例修改: 修改前: for (i = 0; i < num_urbs; i++) { if (urb == tpriv->iso_urbs[i]) { urb_idx = i + 1;

hanye2020的博客 3576

15个高效的MySQL数据库查询小技巧

介绍15个提高MySQL数据库性能的常用技巧。

u013643074的博客 1542

从零开始使用matlab实现EKF-SLAM算法(含完整代码)

扩展卡尔曼滤波器同步定位与建图 (EKF-SLAM) 算法建立在 EKF 的基础上,集成了 EKF 的功能,可解决机器人技术中最具挑战性的问题之一:同时定位与建图 (SLAM)。 EKF-SLAM采用EKF方法来同时估计机器人的状态和周围环境的布局,而无需事先了解位置。 这种双重功能对于在未知环境中运行的自主系统至关重要,使它们能够在绘制区域地图时有效导航。 EKF-SLAM 算法一直是自动驾驶车辆和机器人系统开发的基石,为处理现实世界环境中固有的不确定性提供了一个强大的框架。

mjmmm的博客 6636

数据库查询优化的方式

目录一、衡量查询开销的指标有哪些二、哪些因素导致了查询速度慢三、如何优化 一、衡量查询开销的指标有哪些 响应时间 扫描行数 返回的行数 二、哪些因素导致了查询速度慢 查询不需要的记录。 表关联时返回全部列 总是取出全部列 三、如何优化 1.用索引 最简单且见效最快的方式就是给你的条件加索引(主键索引,普通索引,唯一索引等)。 2、使用连接代替子查询 3、使用联合查询代替创建临时表 4、事务 5、使用外键 6、优化查询方式 优化查询语句的例子 ...

cqwoniu的博客 2302

PCL 基于超体素的点云分割【2024最新版】

点云超体素分割原理介绍、代码实现以及如何做到将每一个超体素内的点进行单独保存而不造成点云缺失的方法。博客长期更新,本文最近一次更新时间为:2024年12月29日。

点云侠的博客 36万+

Calibre LVS 问题解析

LVS常见问题与解决办法

m0_61544122的博客 2万+

数据库常见的查询

数据库常见的查询总结

demonXwire的博客 1万+

推理引擎终极对决:TensorRT vs ONNX Runtime,YOLOv8速度差30%的核心原因与实操指南

若你使用NVIDIA GPU,且追求极致速度和低延迟,TensorRT是唯一选择,尤其是边缘设备和实时场景;若你需要跨硬件部署、快速验证原型,或预算有限(无需NVIDIA GPU),ONNX Runtime是性价比之王;对于YOLOv8这类检测模型,TensorRT的FP16/INT8量化是“免费的速度提升”,建议优先采用。最后提醒:推理引擎的优化是“细节决定成败”——同样的引擎,不同的预处理方式、显存配置、批大小,都会导致10%-20%的性能差异。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1027

千万级数据查询中CK、ES、RediSearch方案的优化

在开发中遇到一个业务诉求,需要在千万量级的底池数据中筛选出不超过 10W 的数据,并根据配置的权重规则进行排序、打散(如同一个类目下的商品数据不能连续出现 3 次)。下面对该业务诉求的实现,设计思路和方案优化进行介绍,对「千万量级数据中查询 10W 量级的数据」设计了如下方案整体方案设计为技术方案如下 对目标数据 result 进行排序,得到最终的「结果数据」。 CK分页查询 在「初版设计方案」章节的第 3 步提到了「从 CK 底池表取目标数据时,开启多线程,进行分页筛选」。此处对 CK 分页

q66562636的博客 3869

【SpringBoot 3.x 第92节】Spring Modulith:构建模块化单体架构(基于 Spring Boot 3),一文带你搞透(超详细)!

🏆本文收录于《滚雪球学SpringBoot 3.x》,专门攻坚指数提升,本年度国内最系统+最专业+最详细(永久更新)。    该专栏致力打造最硬核 SpringBoot3 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。 如果想快速定位学习,可以看这篇【SpringBoot3教程导航帖】,你想学习的都被收集在内,快速投入学习!!两不误。

**My Coding Family** 1002

【数据集】中国区域地面气象要素驱动数据集(CMFD)2.0

中国区域地面气象要素驱动数据集(CMFD)2.0

WW、forever的博客 2985

优化数据库查询的十大方法

参考资料:如何优化数据库查询

qq_46130027的博客 1212

基于STM32的智能婴儿床设计(蓝牙通信+摄像头监控)_315

本项目设计并实现了一款基于STM32微控制器的智能婴儿床系统,通过多种传感器和智能控制模块为家长提供更便捷和高效的婴儿照护解决方案。系统包括婴儿哭泣检测、湿度监测、空气质量检测、温度监控等多项功能,并通过蓝牙与手机APP进行数据传输和远程控制。婴儿床内置摇摇床和安抚音乐播放功能,能够在婴儿哭泣时自动启动摇摇床并播放安抚音乐。此外,系统还支持摄像头远程监控,让家长实时查看婴儿的状态。整个系统采用STM32F103RCT6作为核心控制单元,结合声音传感器、湿度传感器、MQ135空气质量传感器。

865

【SQL】数据库查询优化性能小技巧

定位慢查询:通过慢查询日志或数据库监控工具。分析执行计划:使用EXPLAIN找出瓶颈。针对性优化:是否缺少索引?→ 创建合适的索引。索引是否失效?→ 改写查询,避免对索引列进行计算。查询语句是否低效?→ 重写查询(如用JOIN代替子查询,用EXISTS代替IN数据量是否太大?→ 考虑分页优化、分区或归档历史数据。测试验证:优化后再次分析执行计划和查询时间,确认性能提升。

qq_40205510的博客 980

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

几个数据库查询优化小技巧

<!--google_ad_client = "pub-8623828525301422";google_ad_width = 336;google_ad_height = 280;google_ad_format = "336x280_as";google_ad_type = "text_image";google_ad_channel = "";google_c

fantasy 我去2000年 689

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

oracle查询字典表很卡,Oracle数据库字典表优化小技巧

一、字典表一般是比较常用的,可以设置这些表使用keep池。先分析一下方案中的字典表,以便计算空间,简单起见,所有表都分析一下,调用存储过程:dbms_stats.gather_schema_stats(ownname=>'Schema名称')计算一下所需的空间:select sum(blocks)*8 from user_tables where name like 'DICT\_%' es...

weixin_39929259的博客 103

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

优化数据库查询小技巧:include refid =“base_column_list”

Mybatis的映射文件中引入了<include refid="Base_Column_List" /> ,意思就是固定几个需要查询的字段,在sql语句中不需要写具体的字段了。很多时候并不需要查询数据库中的全部字段,用*号的话会降低查询效率,后期数据库的字段会不断增加,很多字段的组合是经常被使用到的,每次都单独写出来很麻烦。

Zhou_10的博客 757

sql优化 减少数据库堆栈性能的12个小技巧

sql优化 减少数据库堆栈性能的12个小技巧

编程技术、独立开发、技术资讯以及编程感悟等内容 2396

小技巧:显示数据库查询耗时,改善开发者习惯

我会分享一系列在我开发生涯中积累的有用且容易实现的小技巧,本文是此系列的第一篇。 很多原因都可能导致网站运行缓慢,但这其中最常见的就是在数据库查询耗时太多。目前,数据库查询可能在网页渲染过程中起着很重要的作用(网页上的内容总得从某处获取),但是有时候 一些不必要的亦或没有优化好的查询会影响网页渲染的速度。 例如: · 查询的数据根本没有被使用 · 查询时未使用索引 · ...

dbna5213的博客 123

Java基础知识之MySQL查询优化30个实用小技巧总结

MySQL的性能优化非常广泛,包括索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化等等。今天千锋小编主要给大家推荐MySQL查询优化的30个小技巧,希望能对大家的学习有帮助~ 1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎...

码农王也的博客 804

聊聊sql优化的15个小技巧,太赞了

前言 sql优化是一个大家都比较关注的热门话题,无论你在面试,还是工作中,都很有可能会遇到。 如果某天你负责的某个线上接口,出现了性能问题,需要做优化。那么你首先想到的很有可能是优化sql语句,因为它的改造成本相对于代码来说也要小得多。 那么,如何优化sql语句呢? 这篇文章从15个方面,分享了sql优化的一些小技巧,希望对你有所帮助。 1 避免使用select * 很多时候,我们写sql语句时,为了方便,喜欢直接使用select *,一次性查出表中所有列的数据。 反例: sele

a77582581234的博客 1164

学完Python,咱们聊聊sql优化的15个小技巧

SQL 优化是一个大家都比较关注的热门话题,无论你在面试,还是工作中,都很有可能会遇到。 如果某天你负责的某个线上接口,出现了性能问题,需要做优化。那么你首先想到的很有可能是优化sql语句,因为它的改造成本相对于代码来说也要小得多。 那么,如何优化sql语句呢? 这篇文章从15个方面,分享了sql优化的一些小技巧,希望对你有所帮助。欢迎关注、点赞、收藏学习。技术交流文末加我们 1 避免使用select * 很多时候,我们写sql语句时,为了方便,喜欢直接使用select *,一次性查出表中所有列的数据。

Python学习与数据挖掘 899

【MySQL数据库】sql优化的15个小技巧,学会性能提升100%

如果某天你负责的某个线上接口,出现了性能问题,需要做优化。那么你首先想到的很有可能是优化,因为它的改造成本相对于代码来说也要小得多。那么,如何优化sql语句呢?这篇文章从15个方面,分享了sql优化的一些小技巧,希望对你有所帮助。最近无意间获得一份BAT大厂大佬写的刷题笔记,一下子打通了我的任督二脉,越来越觉得算法没有想象中那么难了。

程序源日志的博客 1060

聊聊sql优化的15个小技巧

前言sql优化是一个大家都比较关注的热门话题,无论你在面试,还是工作中,都很有可能会遇到。如果某天你负责的某个线上接口,出现了性能问题,需要做优化。那么你首先想到的很有可能是优化sql语句...

磊哥聊Java 425
上一篇: 数据库设计方法、规范与技巧
下一篇: PowerDesigner设计数据库
pardxa
博客等级 码龄23年 25粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值