转自:http://www.admin10000.com/document/198.html
大多数网站的内容都存在数据库里,用户通过请求来访问内容。数据库非常的快,有许多技巧能让你优化数据库的速度,使你不浪费服务器的资源。在这篇文章中,我收录了十个优化数据库速度的技巧。
1、小心设计数据库
第一个技巧也许看来理所当然,但事实上大部分数据库的问题都来自于设计不好的数据库结构。
譬如我曾经遇见过将客户端信息和支付信息储存在同一个数据库列中的例子。对于系统和用数据库的开发者来说,这很糟糕。
新建数据库时,应当将信息储存在不同的表里,采用标准的命名方式,并采用主键。
来源: http://www.simple-talk.com/sql/database-administration/ten-common-database-design-mistakes/
2、清楚你需要优化的地方
如果你想优化某个查询语句,清楚的知道这个语句的结果是非常有帮助的。采用EXPLAIN语句,你将获得很多有用的信息,下面来看个例子:
EXPLAIN SELECT * FROM ref_table,other_table WHERE ref_table.key_column=other_table.column;
来源: http://dev.mysql.com/doc/refman/5.0/en/using-explain.html
3、最快的查询语句…是那些你没发送的语句
每次你向数据库发送一条语句,你都会用掉很多服务器资源。所以在很高流量的网站中,最好的方法是将你的查询语句缓存起来。
有许多种缓存语句的方法,下面列出了几个:
AdoDB: AdoDB是一个PHP的数据库简化库。使用它,你可以选用不同的数据库系统(MySQL, PostGreSQL, Interbase等等),而且它就是为了速度而设计的。AdoDB提供了简单但强大的缓存系统。还有,AdoDB拥有BSD许可,你可以在你的项目中免费使用它。对于商业化的项目,它也有LGPL许可。
Memcached:Memcached是一种分布式内存缓存系统,它可以减轻数据库的负载,来加速基于动态数据库的网站。
CSQL Cache: CSQL缓存是一个开源的数据缓存架构。我没有试过它,但它看起来非常的棒。
4、不要select你不需要的
获取想要的数据,一种非常常见的方式就是采用*字符,这会列出所有的列。
SELECT * FROM wp_posts;
然而,你应该仅列出你需要的列,如下所示。如果在一个非常小型的网站,譬如,一分钟一个用户访问,可能没有什么分别。然而如果像Cats Who Code这样大流量的网站,这就为数据库省了很多事。
SELECT title, excerpt, author FROM wp_posts;
5、采用LIMIT
仅获得某个特定行数的数据是非常常见的。譬如博客每页只显示十篇文章。这时,你应该使用LIMIT,来限定你想选定的数据的行数。
如果没有LIMIT,表有100,000行数据,你将会遍历所有的行数,这对于服务器来说是不必要的负担。
SELECT title, excerpt, author FROM wp_posts LIMIT 10;
6、避免循环中的查询
当在PHP中使用SQL时,可以将SQL放在循环语句中。但这么做给你的数据库增加了负担。
下面的例子说明了“在循环语句中嵌套查询语句”的问题:
foreach ($display_order as $id => $ordinal){
$sql = "UPDATE categories SET display_order = $ordinal WHERE id = $id";
mysql_query($sql);
}
你可以这么做:
UPDATE categories
SET display_order = CASE id
WHEN 1 THEN 3
WHEN 2 THEN 4
WHEN 3 THEN 5
END WHERE id IN (1,2,3)
来源: http://www.karlrixon.co.uk/articles/sql/update-multiple-rows-with-different-values-and-a-single-sql-query/
7、采用join来替换子查询
程序员可能会喜欢用子查询,甚至滥用。下面的子查询非常有用:
SELECT a.id,
(SELECT MAX(created)
FROM posts
WHERE author_id = a.id)
AS latest_post FROM authors a
虽然子查询很有用,但join语句可以替换它,join语句执行起来更快。
SELECT a.id, MAX(p.created) AS latest_post
FROM authors a
INNER JOIN posts p
ON (a.id = p.author_id)
GROUP BY a.id
来源: http://20bits.com/articles/10-tips-for-optimizing-mysql-queries-that-dont-suck/
8、小心使用通配符
通配符非常好用,在搜索数据的时候可以用通配符来代替一个或多个字符。我不是说不能用,而是,应该小心使用,并且不要使用全词通配符(full wildcard),前缀通配符或后置通配符可以完成相同的任务。
事实上,在百万数量级的数据上采用全词通配符来搜索会让你的数据库当机。
#Full wildcard
SELECT * FROM TABLE WHERE COLUMN LIKE '%hello%';
#Postfix wildcard
SELECT * FROM TABLE WHERE COLUMN LIKE 'hello%';
#Prefix wildcard
SELECT * FROM TABLE WHERE COLUMN LIKE '%hello';
来源: http://hungred.com/useful-information/ways-optimize-sql-queries/
9、采用UNION来代替OR
下面的例子采用OR语句来:
SELECT * FROM a, b WHERE a.p = b.q or a.x = b.y;
UNION语句,你可以将2个或更多select语句的结果拼在一起。下面的例子返回的结果同上面的一样,但是速度要快些:
SELECT * FROM a, b WHERE a.p = b.q
UNION
SELECT * FROM a, b WHERE a.x = b.y
来源: http://www.bcarter.com/optimsql.htm
10、使用索引
数据库索引和你在图书馆中见到的索引类似:能让你更快速的获取想要的信息,正如图书馆中的索引能让读者更快的找到想要的书一样。
可以在一个列上创建索引,也可以在多个列上创建。索引是一种数据结构,它将表中的一列或多列的值以特定的顺序组织起来。
下面的语句在Product表的Model列上创建索引。这个索引的名字叫作idxModel
CREATE INDEX idxModel ON Product (Model);
来源: http://www.sql-tutorial.com/sql-indexes-sql-tutorial/
原文链接 :catswhocode.com
分享到:
相关推荐
Matlab领域上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:HTML + Vue.js 后端框架:Spring Boot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven
该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:HTML + Vue.js 后端框架:Spring Boot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven
代码随想录知识星球精华(最强八股文)第五版(算法篇).pdf
该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:HTML + Vue.js 后端框架:Spring Boot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven
VSG风光储直流微电网simulink仿真 详细效果可以看这个视频 风力发电机组、光伏阵列和燃料电池并联接入直流母线,直流母线连接蓄电池采用恒压控制,并采用固定系数的VSG发出PWM信号控制逆变桥,有功功率指令再1s时变化,无功功率指令在2.1s时变化。 最后得到的结果具有较好的稳定性。 经过测试,在风速变化和光照强度变化时均不会影响稳定性。
内容概要:本文档介绍了如何在Java环境下设置多个项目的联合编译机制,尤其是针对采用Eclipse IDE的情况。首先讲述了配置构建路径以及创建合适的项目结构的关键步骤,确保不同模块间的依赖性和相互引用得到正确处理。然后详细探讨了自动编译器参数配置和解决可能出现的常见错误的方法。 适用人群:适用于初学者及以上水平的Java程序员或者团队负责人,在他们面临复杂的多项目工程管理任务时提供指导。 使用场景及目标:本指南的目标是在实际工作中提升跨模块代码集成效率、缩短产品迭代周期的同时减少潜在的技术债务。具体来说,可以用于大型系统拆分为多个子模块以便并行开发的场景中。 其他说明:虽然本文档主要关注Eclipse平台,但大部分的概念同样适用于其他的IDE工具如IntelliJ IDEA等;此外,关于联合编译过程中遇到的问题排查技巧也有涉及,旨在帮助用户更好地理解和应用相关内容。
你好阿德简答ID卡是你没多久你到家
该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:HTML + Vue.js 后端框架:Spring Boot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven
pytorch基于LSTM、GRU、BPNN进行时间序列预测源码(高分项目),个人大三大作业设计项目、经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 pytorch基于LSTM、GRU、BPNN进行时间序列预测源码(高分项目)pytorch基于LSTM、GRU、BPNN进行时间序列预测源码(高分项目)pytorch基于LSTM、GRU、BPNN进行时间序列预测源码(高分项目)pytorch基于LSTM、GRU、BPNN进行时间序列预测源码(高分项目)pytorch基于LSTM、GRU、BPNN进行时间序列预测源码(高分项目)pytorch基于LSTM、GRU、BPNN进行时间序列预测源码(高分项目)pytorch基于LSTM、GRU、BPNN进行时间序列预测源码(高分项目)pytorch基于LSTM、GRU、BPNN进行时间序列预测源码(高分项目)pytorch基于LSTM、GRU、BPNN进行时间序列预测源码(高分项目)pytorch基于L
安卓游戏-Android studio拼图游戏项目源码+说明(高分期末大作业),个人大三大作业设计项目、经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 安卓游戏-Android studio拼图游戏项目源码+说明(高分期末大作业)安卓游戏-Android studio拼图游戏项目源码+说明(高分期末大作业)安卓游戏-Android studio拼图游戏项目源码+说明(高分期末大作业)安卓游戏-Android studio拼图游戏项目源码+说明(高分期末大作业)安卓游戏-Android studio拼图游戏项目源码+说明(高分期末大作业)安卓游戏-Android studio拼图游戏项目源码+说明(高分期末大作业)安卓游戏-Android studio拼图游戏项目源码+说明(高分期末大作业)安卓游戏-Android studio拼图游戏项目源码+说明(高分期末大作业)安卓游戏-Android studio拼图游戏项目源码+说明(高分期末大作业)
nashorn.jar依赖包
卡通手绘男女结婚礼邀请函模板
自动浇花系统采用51单片机+LCD1602液晶+土壤传感器+继电器+ADC0832+水泵设计而成。 系统三个按键分别是:系统复位键、设置键、加键、减键。 1、土壤干湿度传感器实时给单片机传输信号。 2、按键设置土壤干湿度阈值,实现土壤水分的动态控制。 3、液晶实时显示土壤湿度情况,所设置的阈值,直观明了。 4、ADC0832将模拟信号转换成数字信号传给单片机。 按键调节上下限值,LCD1602实时显示土壤湿度值,并显示上下限值。土壤检测传感器检测湿度值低于下限时,蜂鸣器报警并驱动水泵浇水,湿度值高于上限时停止浇水。
自适应巡航控制,ACC,模型预测控制,MPC,纵向跟车避撞控制为分层式控制,上层控制得到期望加速度,下层控制得到对应的期望制动压力和节气门开度。 上层控制首先建立考虑前车加速度扰动的离散跟车运动学模型,然后建立了基于反馈校正的跟车预测模型,接着引入松弛因子与多目标优化求解,大概几百行MPC代码,最后是基于模糊控制的权重系数调整,这是该模型中最重要的一点,当MPC目标函数中的权重系数取为定值时,难以适应复杂多变的道路交通环境,通过根据跟车性、安全性、舒适性以及经济性的偏重程度来设计相对应的权重系数调整策略,可以改善跟车避撞系统对交通环境的适应性,参考其他文献自己搭建的模糊控制规则得到可变权重,这也是ACC控制不同于网上烂大街的普通ACC控制的独特所在,设置了合理的模糊规则,基本论域、模糊集论域、量化因子,比例因子,调整的权重主要有:车间距误差权重系数q_Δd、两车相对速度权重系数q_vrel和自车加速度权重系数q_ar,而把自车跃度q_jr设置为常量,若q_jr也为变权重系数时会使得模糊控制系统过于复杂,易不稳定。 控制效果:匀速输入时,车间距、相对速度、自车的加速度、跃度、期望制动压力
对应chrome版本:118.0.5993.32 系统环境:win32/64位 内容概述:ChromeDriver.exe是一款实用的chrome浏览器驱动工具,能够用于自动化测试、网络爬虫和操作浏览器,其主要作用是模拟浏览器操作,在使用时需要与对应的chrome浏览器版本匹配,否则无法驱动。 应用场景:网络爬虫、自动化测试、web自动化,例如与Selenium等自动化测试框架一起使用,提供更高级的浏览器自动化,实现自动输入、点击、发送等操作。。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
Comsol光学 :taper波导传输及倏逝场效率求解
内容概要:本文档详细介绍了用 C 语言开发的一个小型银行排队和VIP管理系统的代码细节与业务流程模拟实现。主要包含了队列数据结构的应用、顾客到达离开、窗口状态管理以及服务质量评估等功能的模块化代码实现。同时提供了基于时间轴的数据统计,比如业务耗时计算和柜台满意度得分。 这个程序通过构建链表、数组来管理窗口及等待队列,并设有主菜单用于指导用户交互如增加新客户入队,显示队列状态查看窗口繁忙程度,顾客办完事后离柜并反馈评价等场景操作。此外特别设计了VIP绿色通道机制确保特定身份客户能够得到优先权处理。它还实现了对不同类别(普通客户、vip)访问次数及每个交易平均处理速度的汇总统计。 该系统旨在提高银行网点的工作效率和服务质量,通过合理的任务分配和技术手段减少顾客不必要的等待成本。整个项目源代码结构清晰注释完善,对于初学者来说是个很好的实战案例可以帮助理解和掌握基本编程技巧尤其是关于数据类型的使用,指针概念理解,结构体运用以及标准库中关于输入/输出流日期时间相关接口调用方法等内容。 最后作者给出了一些额外特性比如屏幕清屏命令改变背景前景文字样式,通过系统命令行调整终端大小以达到良好UI用户体验,同时考虑到实际应用过程中可能遇到的异常情况加入了简单有效的验证机制保障了整体运行稳定性。 适合人群:对数据结构(尤其是线性和链式存储方式)、C语言有一定基础的学习开发者,希望深入探究队列管理和银行服务模型的实际应用案例的研究人员或者有兴趣于金融IT领域的爱好者。 使用场景及目标:该系统的开发不仅有助于加深学员对于计算机科学理论知识的理解——例如抽象数据类型ADT的概念与具体实现形式;而且还能作为金融机构优化客户服务体验的有效工具——通过对营业大厅客流高峰期低谷期变化趋势分析帮助管理层制定更合理的运营政策安排;另外亦可为后续更大规模企业级应用程序架构搭建打下坚实的逻辑思维基础。 其他说明:文中存在部分旧式的iostream头文件引用方式,这是早期版本C++的残留,并非现行规范推荐的做法;此外在面向对象编程兴起之前的背景下该解决方案显得较为朴素缺乏面向对象的设计思想如类封装多态继承等。但无论如何作为一个教学辅助材料来讲还是非常适合用来学习传统的过程驱动型编码模式及其背后的工作原理。
2024具身智能科技前沿热点-中关村智友-2024-32页.pdf
该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:HTML + Vue.js 后端框架:Spring Boot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven