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

2017年做那家网站好网站内容页面怎么做的

2017年做那家网站好,网站内容页面怎么做的,中国食品网,o2o平台是什么意思啊在处理大数据量的MySQL表时#xff0c;我们经常会遇到一个问题#xff1a;当我们尝试使用LIMIT语句进行分页查询时#xff0c;性能会随着偏移量的增加而显著下降。例如#xff0c;SELECT * FROM table LIMIT 1000000, 10 这样的查询可能会非常慢。那么#xff0c;我们应该…在处理大数据量的MySQL表时我们经常会遇到一个问题当我们尝试使用LIMIT语句进行分页查询时性能会随着偏移量的增加而显著下降。例如SELECT * FROM table LIMIT 1000000, 10 这样的查询可能会非常慢。那么我们应该如何解决这个问题呢 问题原因 首先我们需要理解为什么这个问题会发生。MySQL在执行LIMIT语句时会先跳过指定的偏移量然后返回接下来的行。这意味着如果你的偏移量非常大比如1,000,000MySQL需要先跳过1,000,000行这是非常耗时的。 解决方案 对于这个问题我们有几种可能的解决方案 使用索引覆盖扫描Covering Index Scan如果你的查询可以被一个索引完全覆盖那么MySQL可以只读取索引而不需要读取实际的行。这可以大大提高查询速度。 记住上次查询的最后一个ID如果你的表有一个递增的ID列你可以在每次查询时记住上次查询的最后一个ID然后在下一次查询时使用这个ID来限制结果。 使用分区表如果你的表非常大你可以考虑使用分区表。这样你的查询可以只扫描一个分区而不是整个表。 下面我们将详细讨论这些解决方案并提供Java示例代码。 使用索引覆盖扫描 假设我们有一个用户表表结构如下 CREATE TABLE users (id bigint(20) NOT NULL AUTO_INCREMENT,username varchar(255) DEFAULT NULL,email varchar(255) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT1000001 DEFAULT CHARSETutf8;我们的查询是SELECT * FROM users ORDER BY id LIMIT 1000000, 10。 为了优化这个查询我们可以创建一个覆盖索引 CREATE INDEX idx_users_id_username_email ON users(id, username, email);然后我们可以修改查询为 SELECT id, username, email FROM users ORDER BY id LIMIT 1000000, 10;这样MySQL可以只读取索引而不需要读取实际的行。 在Java中我们可以使用JdbcTemplate来执行这个查询 import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper;import java.util.List;public class UserDao {private JdbcTemplate jdbcTemplate;public UserDao(JdbcTemplate jdbcTemplate) {this.jdbcTemplate jdbcTemplate;}public ListUser getUsers(int offset, int limit) {String sql SELECT id, username, email FROM users ORDER BY id LIMIT ?, ?;return jdbcTemplate.query(sql, new Object[]{offset, limit}, (rs, rowNum) -new User(rs.getLong(id), rs.getString(username), rs.getString(email)));} }记住上次查询的最后一个ID 另一个解决方案是在每次查询时记住上次查询的最后一个ID然后在下一次查询时使用这个ID来限制结果。这样我们就不需要跳过任何行而可以直接从需要的位置开始查询。 假设我们的初始查询是SELECT * FROM users ORDER BY id LIMIT 10。然后我们记住最后一个用户的ID假设是10。在下一次查询时我们可以使用这个ID来限制结果SELECT * FROM users WHERE id 10 ORDER BY id LIMIT 10。 在Java中我们可以修改UserDao类来实现这个功能 public class UserDao {private JdbcTemplate jdbcTemplate;public UserDao(JdbcTemplate jdbcTemplate) {this.jdbcTemplate jdbcTemplate;}public ListUser getUsers(long lastId, int limit) {String sql SELECT * FROM users WHERE id ? ORDER BY id LIMIT ?;return jdbcTemplate.query(sql, new Object[]{lastId, limit}, (rs, rowNum) -new User(rs.getLong(id), rs.getString(username), rs.getString(email)));} }使用分区表 如果你的表非常大你可以考虑使用分区表。例如你可以按照ID的范围来分区你的表。然后你的查询可以只扫描一个分区而不是整个表。 在MySQL中你可以使用PARTITION BY RANGE语句来创建分区表 CREATE TABLE users (id INT NOT NULL,username VARCHAR(30) NOT NULL,email VARCHAR(30) NOT NULL,PRIMARY KEY(id) ) PARTITION BY RANGE (id) (PARTITION p0 VALUES LESS THAN (1000000),PARTITION p1 VALUES LESS THAN (2000000),PARTITION p2 VALUES LESS THAN MAXVALUE );在Java中我们可以按照分区来查询数据 public class UserDao {private JdbcTemplate jdbcTemplate;public UserDao(JdbcTemplate jdbcTemplate) {this.jdbcTemplate jdbcTemplate;}public ListUser getUsers(int partition, int limit) {String sql SELECT * FROM users PARTITION (p partition ) ORDER BY id LIMIT ?;return jdbcTemplate.query(sql, new Object[]{limit}, (rs, rowNum) -new User(rs.getLong(id), rs.getString(username), rs.getString(email)));} }结论 在处理大数据量的MySQL表时我们需要考虑如何优化我们的分页查询。我们可以使用索引覆盖扫描记住上次查询的最后一个ID或者使用分区表。每种方法都有其优点和适用场景我们需要根据我们的具体需求来选择最适合的方法。 公众号请关注 果酱桑, 一起学习,一起进步!
http://www.w-s-a.com/news/232641/

相关文章:

  • 网站设计制作电话多少网站流量下降
  • 沈阳做网站推广的公司唐山哪家做网站好
  • 国外著名网站建设公司WordPress破解怎样主题修复
  • 网站建设济南云畅网络广州电力建设有限公司网站
  • 查看公司信息的网站思特奇是外包公司吗
  • 制作企业网站的目的啥都能看的浏览器
  • 做网站可以用哪些语言如何进行网站运营与规划
  • 做效果图网站有哪些电子商城网站制作数据库
  • 小刘网站建设wordpress调用php文件上传
  • 建设银行对账网站网络营销广告案例
  • 做网站开票是多少个点的票wordpress扫码提交数据库
  • 织梦网站改版需要怎么做企业网站备案管理系统
  • 大规模网站开发语言宁夏建设职业技术学院网站
  • 寻花问柳专注做一家男人爱的网站北京展台设计制作
  • 中卫网站设计做自己的卡盟网站
  • 广州网站推广自助做网站人家直接百度能搜到的
  • 电子商务网站建设目标及利益分析安徽建设厅网站施
  • 制作网站策划书网站建设公司的性质
  • 哪个网站可以做免费宣传简单的网页设计网站
  • 福州专业网站制作公司金湖建设局网站
  • 好的移动端网站模板下载兰州线上广告推广
  • 宁波高端建站深圳品牌营销策划机构
  • 权威网站优化价格建设厅科技中心网站首页
  • 保定模板建站软件腾讯云做淘客网站
  • 单位建设一个网站的费用正规刷手机单做任务网站
  • 北京定制网站价格开网店怎么卖到外国
  • 做网站 后端是谁来做的工程建设指挥部网站
  • wordpress建站 云打印昆明 网站设计
  • 太原网站建设设计网站建设策划书(建设前的市场分析)
  • 哪里有制作网站电商新手入门知识