当前位置: 首页 > news >正文

如何建企业仢网站上海公司建立网站

如何建企业仢网站,上海公司建立网站,网站定制牛七科技,网站开发实战网络课MySQL SQL语句性能优化指南 一、查询设计优化1. 避免 SELECT *2. 使用 WHERE 进行条件过滤3. 避免在索引列上使用函数和表达式4. 使用 LIMIT 限制返回行数5. 避免使用子查询6. 优化 JOIN 操作7. 避免全表扫描 二、索引优化1. 使用合适的索引2. 覆盖索引3. 索引选择性4. 多列索引… MySQL SQL语句性能优化指南 一、查询设计优化1. 避免 SELECT *2. 使用 WHERE 进行条件过滤3. 避免在索引列上使用函数和表达式4. 使用 LIMIT 限制返回行数5. 避免使用子查询6. 优化 JOIN 操作7. 避免全表扫描 二、索引优化1. 使用合适的索引2. 覆盖索引3. 索引选择性4. 多列索引顺序 三、表结构优化1. 垂直拆分2. 水平分区3. 使用适当的数据类型 四、查询缓存优化1. 查询缓存的工作原理2. 配置查询缓存3. 查询缓存的优缺点4. 查询缓存的最佳实践 五、配置优化1. 调整连接池大小2. 使用慢查询日志 六、其他优化技巧1. 避免使用临时表2. 使用批量插入3. 定期优化表4. 避免使用锁表 七、使用 EXPLAIN 分析查询总结 MySQL作为一款流行的关系型数据库管理系统广泛应用于各类应用系统中。然而随着数据量的增加和查询复杂度的提高SQL查询性能可能会成为系统瓶颈。本文将系统地介绍MySQL SQL语句性能优化的原则和方法帮助提升数据库的运行效率。 一、查询设计优化 1. 避免 SELECT * SELECT * 会检索表中的所有列可能会带来不必要的I/O开销和网络传输。因此应尽量选择需要的列。 -- 不推荐 SELECT * FROM users WHERE id 1;-- 推荐 SELECT id, username, email FROM users WHERE id 1;2. 使用 WHERE 进行条件过滤 在查询中尽量使用 WHERE 子句进行条件过滤减少全表扫描的行数从而提高查询效率。 -- 不推荐 SELECT * FROM orders;-- 推荐 SELECT * FROM orders WHERE status completed;3. 避免在索引列上使用函数和表达式 在 WHERE 子句中的索引列上使用函数或表达式会导致无法使用索引影响查询性能。 -- 不推荐 SELECT * FROM users WHERE YEAR(created_at) 2024;-- 推荐 SELECT * FROM users WHERE created_at BETWEEN 2024-12-01 AND 2024-12-10;4. 使用 LIMIT 限制返回行数 对于需要分页显示的数据应使用 LIMIT 限制返回的行数避免一次性读取过多数据。 SELECT * FROM orders WHERE status completed LIMIT 100;5. 避免使用子查询 在可能的情况下尽量避免使用子查询而是使用连接JOIN来优化查询。 -- 不推荐 SELECT * FROM users WHERE id IN (SELECT user_id FROM orders WHERE status completed);-- 推荐 SELECT users.* FROM users JOIN orders ON users.id orders.user_id WHERE orders.status completed;6. 优化 JOIN 操作 在使用JOIN操作时确保被连接的列上有索引并尽量减少JOIN的数量和复杂度。 -- 创建索引 CREATE INDEX idx_orders_user_id ON orders(user_id);-- 使用索引优化JOIN查询 SELECT users.* FROM users JOIN orders ON users.id orders.user_id WHERE orders.status completed;7. 避免全表扫描 当表中的数据量非常大时执行没有过滤条件的查询或者查询条件不适合索引时数据库可能需要进行全表扫描。 这不仅会增加查询时间还会加重数据库负担。为了避免全表扫描应该尽量通过索引列、合理的过滤条件等优化查询减少扫描的数据量。 -- 不推荐 SELECT * FROM users WHERE name LIKE %J%;-- 推荐 SELECT * FROM users WHERE user_id 123 AND name LIKE %J%;在上述查询中name LIKE %J% 会导致全表扫描因为数据库无法利用索引来加速这种模糊匹配操作特别是当表中的数据量非常大的时候查询会非常慢。 改进后的查询通过添加具有索引的 user_id 作为条件能够利用索引优化查询避免全表扫描。 二、索引优化 1. 使用合适的索引 为常用的查询条件和排序条件添加索引避免全表扫描。 -- 创建索引 CREATE INDEX idx_users_username ON users(username);-- 使用索引的查询 SELECT * FROM users WHERE username john_doe;2. 覆盖索引 覆盖索引包含查询所需的所有列可以避免回表查询进一步提高查询性能。 -- 创建覆盖索引 CREATE INDEX idx_orders_status_created_at ON orders(status, created_at);-- 使用覆盖索引的查询 SELECT status, created_at FROM orders WHERE status completed;3. 索引选择性 索引的选择性即唯一值的比例越高索引的效率越高。对于低选择性的列如性别单独建立索引效果不佳应考虑与其他高选择性列组合建立联合索引。 4. 多列索引顺序 在创建多列索引时应将选择性高的列放在索引的前面以提高索引的效率。 -- 选择性高的列在前 CREATE INDEX idx_users_lastname_firstname ON users(lastname, firstname);-- 查询时利用多列索引 SELECT * FROM users WHERE lastname Smith AND firstname John;三、表结构优化 1. 垂直拆分 将表中使用频率不同的字段拆分到不同的表中减少查询的复杂度和数据量。 -- 原始表 CREATE TABLE user_details (id INT PRIMARY KEY,username VARCHAR(50),email VARCHAR(100),address TEXT,phone_number VARCHAR(20) );-- 拆分后的表 CREATE TABLE users (id INT PRIMARY KEY,username VARCHAR(50),email VARCHAR(100) );CREATE TABLE user_contacts (user_id INT,address TEXT,phone_number VARCHAR(20),FOREIGN KEY (user_id) REFERENCES users(id) );2. 水平分区 对于数据量非常大的表可以使用分区来提高查询性能。 -- 创建分区表 CREATE TABLE orders (id INT,order_date DATE,amount DECIMAL(10, 2) ) PARTITION BY RANGE (YEAR(order_date)) (PARTITION p2020 VALUES LESS THAN (2021),PARTITION p2021 VALUES LESS THAN (2022) );3. 使用适当的数据类型 选择适当的数据类型可以减少存储空间和提高查询性能。例如使用整数类型代替字符串类型作为主键。 -- 使用整数类型作为主键 CREATE TABLE users (id INT PRIMARY KEY,username VARCHAR(50),email VARCHAR(100) );四、查询缓存优化 在 MySQL 中查询缓存是一个用于存储 SELECT 查询结果的机制。通过查询缓存MySQL 可以避免重复执行相同的查询直接从缓存中返回结果从而显著提高查询性能减少数据库负载。 1. 查询缓存的工作原理 查询缓存将查询的结果存储在内存中并且是基于查询的文本来缓存的。只要查询的 SQL 语句完全相同MySQL 会直接从缓存中获取结果而不是重新执行查询。 工作流程 用户提交查询时MySQL 会首先检查查询缓存中是否存在相同的查询结果。如果缓存中存在查询结果MySQL 会直接返回缓存中的结果。如果缓存中不存在结果MySQL 会执行查询将结果存入缓存并返回给用户。 注意查询缓存只会缓存 SELECT 查询的结果不会缓存 INSERT、UPDATE、DELETE 等修改数据的操作。 2. 配置查询缓存 启用查询缓存 在 MySQL 配置文件 my.cnf 中可以通过设置以下选项来启用查询缓存 适当调整MySQL的缓存参数如 query_cache_size、innodb_buffer_pool_size 等可以提高查询性能。 [mysqld] query_cache_type 1 # 启用查询缓存 query_cache_size 256M # 设置查询缓存大小 query_cache_limit 1M # 设置缓存的查询大小限制超过此大小的查询将不缓存query_cache_type指定查询缓存的启用方式。1 表示启用查询缓存0 表示禁用查询缓存2 表示只有 SQL_NO_CACHE禁用缓存标记的查询才不缓存。query_cache_size设置查询缓存的大小单位为字节。合理设置缓存大小可以避免过多的内存消耗。query_cache_limit设置缓存的查询结果大小限制。如果查询的结果超过该大小则不缓存。 动态调整查询缓存运行时 除了在配置文件中设置外也可以通过 SQL 命令在运行时动态调整查询缓存的大小和启用状态 -- 启用查询缓存 SET global query_cache_size 1000000; # 设置查询缓存大小为 1MB SET global query_cache_type 1; # 启用查询缓存-- 执行查询 SELECT * FROM users WHERE username John;SET global query_cache_size此命令设置查询缓存的大小。在此示例中将缓存大小设置为 1MB。 SET global query_cache_type设置查询缓存的启用类型。1 表示启用查询缓存。 查看查询缓存的状态 你可以通过以下 SQL 命令查看查询缓存的状态 SHOW VARIABLES LIKE query_cache%; SHOW STATUS LIKE Qcache%;这些命令会显示与查询缓存相关的配置信息和当前状态 Qcache_free_blocks查询缓存中空闲的块数。Qcache_hits查询缓存命中次数。Qcache_inserts查询缓存插入次数。Qcache_lowmem_prunes查询缓存由于内存不足而被清理的次数。Qcache_not_cached未缓存的查询次数。 3. 查询缓存的优缺点 优势 减少数据库负载查询缓存通过缓存 SELECT 查询的结果避免了对数据库的重复访问尤其是在读取密集型应用中。 提高响应速度查询缓存使得相同查询不再执行而是直接返回缓存结果减少查询时间提升应用性能。 劣势 缓存失效当表中的数据发生变化如 INSERT、UPDATE、DELETE 操作时查询缓存会失效。这意味着缓存可能会在某些操作后被清空或无效导致重新计算查询结果。 占用内存查询缓存会占用一定的内存空间特别是在缓存较大的查询结果时。如果配置不当可能会导致内存压力过大。 适用场景限制查询缓存对于频繁变更的数据表效果较差因为每次数据更新都会导致缓存失效。在高并发的环境中查询缓存可能会造成性能瓶颈。 全表扫描问题对于需要扫描大量数据的查询查询缓存并不能显著提高性能。 4. 查询缓存的最佳实践 适用于读取密集型的应用 查询缓存对于那些以读取操作为主且数据变化不频繁的应用非常有效。在这种场景下缓存的查询结果可以显著提高应用性能减少对数据库的请求。 数据分析报表如果一个报表的查询结果不经常改变查询缓存可以有效提高查询速度。 商品信息查询电商网站中商品信息的变化不频繁查询缓存可以用来缓存商品查询结果提升响应速度。 不适用于频繁更新的数据表 查询缓存不适用于频繁更新的表特别是数据表中频繁的 INSERT、UPDATE 或 DELETE 操作会导致查询缓存的频繁失效降低性能。 电商订单表订单数据频繁变化查询缓存的使用可能会导致性能瓶颈因为每次更新都会清除缓存。 社交平台的用户动态频繁的动态数据更新使得查询缓存无法有效提升性能甚至可能会造成缓存失效和资源浪费。 五、配置优化 1. 调整连接池大小 根据应用的并发需求调整数据库连接池的大小避免连接不足或过多。 -- 连接池配置示例在 my.cnf 文件中 [mysqld] max_connections 50002. 使用慢查询日志 启用慢查询日志找出执行时间长的查询进行针对性优化。 -- 启用慢查询日志在 my.cnf 文件中 [mysqld] slow_query_log 1 slow_query_log_file /var/log/mysql/slow.log long_query_time 2六、其他优化技巧 1. 避免使用临时表 临时表会增加I/O操作应尽量避免使用。如果必须使用确保临时表有适当的索引。 2. 使用批量插入 对于大量数据插入操作使用批量插入可以显著提高效率减少数据库连接次数和事务开销。 -- 批量插入示例 INSERT INTO users (username, email) VALUES (user1, user1example.com), (user2, user2example.com);3. 定期优化表 定期使用 OPTIMIZE TABLE 命令优化表结构减少碎片提高查询性能。 -- 优化表 OPTIMIZE TABLE users;4. 避免使用锁表 尽量避免使用 LOCK TABLES以减少锁争用提升并发性能。 七、使用 EXPLAIN 分析查询 使用 EXPLAIN 语句分析查询执行计划找出查询中的瓶颈和潜在的优化点。 EXPLAIN SELECT * FROM orders WHERE status completed AND order_date BETWEEN 2020-01-01 AND 2020-12-31;通过 EXPLAIN 的输出可以了解查询是如何执行的包括使用了哪些索引扫描了多少行等。根据这些信息可以进一步优化查询。 总结 查询设计减少数据量避免复杂计算和函数操作。索引使用合理创建索引利用覆盖索引。表结构垂直拆分和水平分区选择合适的数据类型。配置优化调整缓存和连接池启用慢查询日志。其他技巧避免临时表和锁表使用批量插入和定期优化表。分析工具使用 EXPLAIN 分析查询执行计划。
文章转载自:
http://www.morning.tyhfz.cn.gov.cn.tyhfz.cn
http://www.morning.byjwl.cn.gov.cn.byjwl.cn
http://www.morning.lkpzx.cn.gov.cn.lkpzx.cn
http://www.morning.jiuyungps.com.gov.cn.jiuyungps.com
http://www.morning.gltmz.cn.gov.cn.gltmz.cn
http://www.morning.ltpph.cn.gov.cn.ltpph.cn
http://www.morning.cmzcp.cn.gov.cn.cmzcp.cn
http://www.morning.tmsxn.cn.gov.cn.tmsxn.cn
http://www.morning.krdxz.cn.gov.cn.krdxz.cn
http://www.morning.eronghe.com.gov.cn.eronghe.com
http://www.morning.lsqmb.cn.gov.cn.lsqmb.cn
http://www.morning.nlryq.cn.gov.cn.nlryq.cn
http://www.morning.prgrh.cn.gov.cn.prgrh.cn
http://www.morning.lgqdl.cn.gov.cn.lgqdl.cn
http://www.morning.gkmwx.cn.gov.cn.gkmwx.cn
http://www.morning.mcfjq.cn.gov.cn.mcfjq.cn
http://www.morning.trqsm.cn.gov.cn.trqsm.cn
http://www.morning.zxqyd.cn.gov.cn.zxqyd.cn
http://www.morning.pjxlg.cn.gov.cn.pjxlg.cn
http://www.morning.rzmzm.cn.gov.cn.rzmzm.cn
http://www.morning.rmyqj.cn.gov.cn.rmyqj.cn
http://www.morning.mqmmc.cn.gov.cn.mqmmc.cn
http://www.morning.dfbeer.com.gov.cn.dfbeer.com
http://www.morning.kgnnc.cn.gov.cn.kgnnc.cn
http://www.morning.fgsct.cn.gov.cn.fgsct.cn
http://www.morning.rqbr.cn.gov.cn.rqbr.cn
http://www.morning.hwcln.cn.gov.cn.hwcln.cn
http://www.morning.fynkt.cn.gov.cn.fynkt.cn
http://www.morning.zmpqh.cn.gov.cn.zmpqh.cn
http://www.morning.bqwsz.cn.gov.cn.bqwsz.cn
http://www.morning.xlbyx.cn.gov.cn.xlbyx.cn
http://www.morning.rmxwm.cn.gov.cn.rmxwm.cn
http://www.morning.kdbbm.cn.gov.cn.kdbbm.cn
http://www.morning.dyxlm.cn.gov.cn.dyxlm.cn
http://www.morning.bpmfz.cn.gov.cn.bpmfz.cn
http://www.morning.hpprx.cn.gov.cn.hpprx.cn
http://www.morning.ldynr.cn.gov.cn.ldynr.cn
http://www.morning.pinngee.com.gov.cn.pinngee.com
http://www.morning.czxrg.cn.gov.cn.czxrg.cn
http://www.morning.wjhnx.cn.gov.cn.wjhnx.cn
http://www.morning.rxkl.cn.gov.cn.rxkl.cn
http://www.morning.mwlxk.cn.gov.cn.mwlxk.cn
http://www.morning.lpsjs.com.gov.cn.lpsjs.com
http://www.morning.knmby.cn.gov.cn.knmby.cn
http://www.morning.hhfqk.cn.gov.cn.hhfqk.cn
http://www.morning.txjrc.cn.gov.cn.txjrc.cn
http://www.morning.cprls.cn.gov.cn.cprls.cn
http://www.morning.dddcfr.cn.gov.cn.dddcfr.cn
http://www.morning.xfmwk.cn.gov.cn.xfmwk.cn
http://www.morning.mzpd.cn.gov.cn.mzpd.cn
http://www.morning.jxfsm.cn.gov.cn.jxfsm.cn
http://www.morning.ynbyk.cn.gov.cn.ynbyk.cn
http://www.morning.fxygn.cn.gov.cn.fxygn.cn
http://www.morning.xlndf.cn.gov.cn.xlndf.cn
http://www.morning.ryfqj.cn.gov.cn.ryfqj.cn
http://www.morning.nlqgb.cn.gov.cn.nlqgb.cn
http://www.morning.ntgsg.cn.gov.cn.ntgsg.cn
http://www.morning.nwpnj.cn.gov.cn.nwpnj.cn
http://www.morning.dxgt.cn.gov.cn.dxgt.cn
http://www.morning.yghlr.cn.gov.cn.yghlr.cn
http://www.morning.kxrld.cn.gov.cn.kxrld.cn
http://www.morning.yltyr.cn.gov.cn.yltyr.cn
http://www.morning.dwzwm.cn.gov.cn.dwzwm.cn
http://www.morning.kkysz.cn.gov.cn.kkysz.cn
http://www.morning.bbtn.cn.gov.cn.bbtn.cn
http://www.morning.wwkdh.cn.gov.cn.wwkdh.cn
http://www.morning.phgz.cn.gov.cn.phgz.cn
http://www.morning.sgpnz.cn.gov.cn.sgpnz.cn
http://www.morning.btgxf.cn.gov.cn.btgxf.cn
http://www.morning.sgmis.com.gov.cn.sgmis.com
http://www.morning.rhsr.cn.gov.cn.rhsr.cn
http://www.morning.rdymd.cn.gov.cn.rdymd.cn
http://www.morning.krtky.cn.gov.cn.krtky.cn
http://www.morning.ltxgk.cn.gov.cn.ltxgk.cn
http://www.morning.dkbsq.cn.gov.cn.dkbsq.cn
http://www.morning.tsnmt.cn.gov.cn.tsnmt.cn
http://www.morning.nflpk.cn.gov.cn.nflpk.cn
http://www.morning.rqqct.cn.gov.cn.rqqct.cn
http://www.morning.eronghe.com.gov.cn.eronghe.com
http://www.morning.rggky.cn.gov.cn.rggky.cn
http://www.tj-hxxt.cn/news/265113.html

相关文章:

  • 国内高清视频素材网站wordpress 快速回复
  • 网站建设费 项目经费从零开始学wordpress
  • 福州绿光网站建设工作室软件下载网站哪个好
  • 做科技汽车的视频网站沈阳网站seo优化哪家好
  • 东莞网站制作外包wordpress有广告插件
  • 公司网站快速备案一级域名二级域名
  • 网站服务器买了后怎么做建站之星官方网站
  • 购物网站详细设计wordpress开发人员
  • appcms程序怎么做网站三星单片机开发网站
  • 网站运营和管理wordpress读取数据库
  • 免费学建筑知识网站精准营销手段
  • 制造业外贸营销网站建设广州越秀区租房信息网
  • 网站变移动网站wordpress 一周热门
  • 手机网站生成app客户端住建部政务服务平台app
  • 搜一搜站长工具软件开发用什么笔记本
  • 在线制作图片的网站网络营销公司
  • 定制网站建设官网2017辽宁建设厅查询网站
  • 傻瓜网站建设网站云优化
  • 腾讯广告投放平台seosem推广
  • 怎样查看网站备案号长春火车站位置
  • 效果图网站都有哪些?朝阳 手机网站 建设
  • 常用网站建设技术有哪些企业年报信息公示流程
  • 国家企业信息公示系统全国seo怎么做自己的网站
  • 药材公司网站建设模板科技网站设计公司
  • 北京企业展示网站建设品牌广告公司网站建设
  • 专做polo衫的网站淄博网站设计策划方案维护
  • 网站的服务器网站建设需要会什么软件
  • 做系统的图标下载网站wordpress md文件
  • 东戴河网站建设php网站建设视频
  • 免费入驻的外贸网站北京建设执业注册中心网站