当前位置:首页 > 日记 > 正文

MySQL分页优化(MySQL1000万快速分页)

MySQL分页优化(MySQL1000万快速分页)
这是我的一点经验。

当你开始学习SQL时,你可以写这个
复制代码代码如下所示:
从表顺序按ID限制1000, 10选择*;

但是当数据达到一百万级时,它就会慢慢死去。
复制代码代码如下所示:
从表顺序按ID限制1000000, 10选择*;

可能需要几十秒钟。

互联网上的许多优化方法都是这样的。
复制代码代码如下所示:
从表中选择id(从表限制> = 1000000, 1选择id)限制为10;

是的,速度是0秒。看起来没问题。
但还不够完美!

以下句子是完美的!
复制代码代码如下所示:
从id为1000000和1000010之间的表中选择*;

比那个快5到10倍。

另外,如果需要查询ID不是一个连续的周期,最好的方法是找出ID,然后在查询中使用。
复制代码代码如下所示:
从表中选择*(10000, 100000, 1000000…);
多分享一点
当一个长字符串查询一个字段时,一个表被设计为在字段中添加一个字段,例如,存储URL的字段。
查询时,不能直接查询字符串,效率低,应检查字符串的CRC32、MD5

如何优化MySQL的几万个快速分页

限制1111的数据执行一些性能问题,并通过各种方法使用id XX使用索引> =,这样Id就可以快速地通过。杰克
MySQL限制分页慢解决方案(MySQL限制优化,百万到1000万记录实现快速分页)

MySQL的性能有多高用了半年多的时间,真的很难去思考这个问题或者一天的开始!mysql数据库绝对适合DBA类专家玩。一般来说,如何编写1万新闻的小新闻系统,可以应用XX框架实现快速发展,但数据量是10万,几百万到几百万,他的表现是否如此之高一个小小的错误,可能会导致整个系统的重写,更使这个系统无法正常运行!好吧,不要废话了,说些事实,看看例子吧:
数据表(ID、标题、信息收集、Vtype)是4个领域,其中标题的长度是固定的,信息是文本,ID是渐进的,Vtype是tinyint和ID指数。这是一个简单的消息系统的基本模型。现在填写的数据和填写10万新闻。
最后,收集是一个10万的记录,和数据库表占用的硬盘1.6g.ok,看下面的SQL语句:

选择ID,从收集的限制1000,10称号;快速;基本确定在0.01秒,然后看下面的
选择ID,从收集的限制90000,10称号;从9万,寻呼和结果
8-9秒完成,我的神哪一个是问题事实上,有必要对数据进行优化并在因特网上找到答案:
选择ID的ID限制90000,10收集订单;很快,0.04秒就可以了。为什么因为使用id键来索引是很快的:
从ID(=)中选择ID、标题(从收集顺序中选择ID);
这是使用id来索引的结果。但是问题太复杂了,完成了。请看下面的语句
选择ID从收集在V型= 1阶的身份限制90000,10;很慢,8-9秒!
在这里,我相信很多人都会像我一样,有一种崩溃的感觉!Vtype已编入索引。怎么能慢V型指数是好的,你直接选择ID从收集在V型= 1的限制1000,10;很快,基本上0.05秒,但是增加了90倍,从9万,这是0.05 * 90 = 4.5秒的速度,测试结果是8-9秒一个量级。从这里,有些人提出了分表的思想,这是不#因为论坛同样的想法。以下思路如下:
建立一个索引表:T(ID、标题、V型)并将它设置为一个固定长度的,然后做一个页面,页面的结果,然后去收集到的信息是可行的吗我在实验中知道的。
10万是记录在T(ID、标题、V型)和数据表的大小约为20m.use
选择ID从T,V型= 1阶的身份限制90000,10;很快,基本上0.1-0.2秒跑了。为什么是这样我想这是因为有太多的收集数据,所以寻呼要跑很长的路。限制是对数据表的大小完全相关。事实上,这是一个全表扫描,只是因为数据量很小,只有10万是fast.ok,得到一个疯狂的实验,加100万、测试性能。
10倍的数据,T台立即去超过200米,它的长度是固定的。或是查询语句,时间是0.1-0.2秒完成!的子表的性能是没有问题的。错 uff01because我们的极限是9万,所以很快。给我一个大的,90万的开始
选择ID从T,V型= 1阶的身份限制900000,10;看结果,时间为1-2秒!
为什么还是这么长时间,很郁闷!有人说长会提高性能极限,我也认为,因为一个记录长度是固定的,MySQL应该在90万个位置可以计算吗但是我们高估了MySQL的智能,他不是一个商业数据库,固定长度和不确定长度对限制的影响很小。难怪有人说Discuz将缓慢向100万的记录,我相信这是真的,这是数据库设计的相关!
MySQL不能突破100万的限制吗100万分页是极限吗
答案是:不!!!为什么不能突破100万,因为它不设计MySQL!100万个记录,和10G数据库,如何快速分页!
好了,我们回去收集测试表,测试得出的结论是:30万,用分表法是可行的,会慢得站不住你30万比他快!当然,如果使用子表+这个方法,它是绝对完美的,但是当我使用这种方法时,没有子刻度就可以很好地解决这个问题。
答案是:综合指数!当设计了其中一个MySQL索引时,可以无意地发现索引名,并且可以选择几个字段来输入索引。这个有什么用开始选择ID的ID限制90000,10收集秩序;它是如此之快,指标的话,但是如果你把它将不会被索引。增加一个索引搜索(V型、ID)与一试的想法。然后测试
选择ID从收集在V型= 1的限制90000,10;很快!完成0.04秒!
复试:选择ID,从收集在V型= 1的限制90000,10称号;很遗憾,8-9秒,没有搜索指数!
复试:搜索(ID、V型),或选择ID,这也是非常令人遗憾,0.5秒。
总结:如果有条件,要使用限制订阅,你必须设计一个索引,将放在第一个,限制使用第二个,只把主键,选择键!
分页问题的完美解决方案。如果您能快速返回id,您需要优化限制。按照这一逻辑,数以百万计的极限应0.0x秒完成。看来,MySQL语句的优化,索引是非常重要的。
那么,回到最初的问题,我们如何能把上述研究成功应用到快速发展上呢如果你使用一个复合查询,我的轻量级框架将不会被使用。分页字符串必须是你自己写的。多少钱下面是一个例子,这个想法出来了。
SELECT * FROM收集在ID(9000,12507000);它可以检查出0秒!
天哪,MySQL的指数同样有效的陈述!看来在网上不能以错误的方式编入索引!
有了这个结论,它可以很容易地应用到轻量级框架中。

代码如下:
复制代码代码如下所示:
美元dblink分贝=();
DB -> PageSize = 20美元;
为SQL = id从收集在V型= $ V型;
$ DB >执行($ SQL);
($ strpage = $数据库-> strpage); / /分页存储在临时变量的字符串,方便输出
而(RS =美元美元DB -> fetch_array()){
跨过美元。= $ RS { 'id' }。';
}
跨过美元= substr(合折叠,0,strlen($斯特里德)- 1); / / ID字符串结构
为数据库-> PageSize = 0; / /是关键,在消除阶级的情况下,页面是空的,只需要一个数据库连接,不需要打开;
为数据库->执行(选择ID、标题、网址、时间、gtime,Vtype,标签从收集的地方);
fetch_array()):>

目标= _blank >

< PHP
echo $ strpage;

通过一个简单的转换,这个想法很简单:1)通过优化索引,找到id,然后拼写一个类似于1239000012000 2的字符串来查询结果。
一个小的索引加上少量的更改允许MySQL支持一百万或一百万级高效分页!
从这里的例子中,我想到了一点:对于大型系统,PHP不能使用框架,尤其是SQL语句无法看到的框架!因为我轻量级框架的开始几乎崩溃了!对于小型应用程序的快速发展,没有ERP、OA、大型Web站点和数据层(包括逻辑层)的框架。如果程序员失去对SQL语句的控制,项目的风险将以几何级数增加!特别是,当MySQL被使用时,MySQL必须需要一个专业的DBA来完成其最佳性能!
PS:经过实际测试,100万的数据,160万个数据表,15G,190m指数,即使指数,限制需要0.49秒。所以分页是最好不要让别人

相关文章

汉语和英语在phpMyAdmin用户权利

汉语和英语在phpMyAdmin用户权利

用户,汉语,英语,权利,电脑软件,数据: 选择:允许读取数据。 插入:允许插入和替换数据。 更新:允许更改数据。 删除:允许删除数据。 文件:允许您从文件中导入数据,并将数据导出到文件中。 结构: 创建:允许您创建一个新的数据库和表。 允许您修改现有…

1Password会将在6月10日登陆Androi

1Password会将在6月10日登陆Androi

平台,将在,电脑软件,Password,Android,{新闻}北京时间5月24日消息,的1Password将于6月10日正式登陆Android equipment.1password最新的消息是一个可以为每个站点一个强密码,并记住它们的应用。 最新版本的1Password是1Password 4,它将免费为…

一个downloadplus.exe过程中的作用

一个downloadplus.exe过程中的作用

作用,过程中,过程,电脑软件,downloadplus,点评:downloadplus.exe是一个广告软件,返回你的浏览偏好分析服务器 进程文件:downloadplus或downloadplus.exe 过程名称:下载加 过程类别:安全风险的过程 英文描述: Downloadplus.exe是一个广告软件收…

腾讯商业基地孵化器的小型应用前景

腾讯商业基地孵化器的小型应用前景

前景,孵化器,腾讯,广阔,基地,28万的注册用户,在数以千万计的用户现在的明星应用的次数,似乎并不明亮,但从腾讯的创业者黄宇翔的创业基地的眼睛,现在稍薄的数字,隐藏自己和球队未来的大。 这种骑行锻炼应用开发的团队,黄宇翔,从单车爱好者的小市场…

Linux对root密码(图形)的解决方案

Linux对root密码(图形)的解决方案

图形,解决方案,密码,电脑软件,Linux,评论:本文主要介绍linux忘记root密码的解决方案,需要的朋友可以参考一下。 Linux忘记了root密码的解决方案这不是一个很常见的情况,但是有些粗心的管理员没有记录在很长一段时间,他们真的忘记了密码。此时,如…

UCloud:云计算承载数据和移动游戏的

UCloud:云计算承载数据和移动游戏的

移动游戏,云计算,数据,未来,电脑软件,7月31日,2014世界移动游戏大会(WMGC),在与2014ChinaJoy同期举行,在上海浦东嘉里大酒店如期举行。会议的第一天,著名的游戏厂商、游戏经销商和电信运营商共同对移动游戏产业的融合与发展观。 在同一天,下午数…

游戏不能设置在DX11模式重新启动游

游戏不能设置在DX11模式重新启动游

模式,重新启动,设置,解决方案,游戏,问题: 最近,我在玩6细胞分裂;游戏,遇到一个奇怪的问题,计算机图形支持DX11驱动和DirectX的最新版本,但在进入DX11模式的游戏菜单,但是重启后游戏或DX9模式,质量很差,不知道是怎么回事 答案uff1a 玩6 细胞分裂;游…

对错误处理的讨论:ARMLinux-康曼德

对错误处理的讨论:ARMLinux-康曼德

发现,错误处理,曼德,电脑软件,ARMLinux,评论:让:ARM Linux -康曼德没有发现错误处理的讨论,需要的朋友可以参考下 总结:ARM Linux -康曼德没有发现错误处理 交叉编译环境下超级用户权限的成功建立,但编译显示 制作:ARM Linux -康曼德没有发现 …

在Oracle数据库中创建合理的数据库

在Oracle数据库中创建合理的数据库

数据库索引,数据库中,电脑软件,Oracle,笔者认为,三个合适的指标应该创建一个索引,即,创建相应的表中指标的适当数量和适当的列。虽然这可以概括在一个句子中的优化指标的基本准则,它是数据库管理员的努力实现这一目标的必要条件。具体来说,要做…

Linuxusb无法识别解决方案

Linuxusb无法识别解决方案

解决方案,无法识别,电脑软件,Linuxusb,评论:今天我们在Linux中使用USB时,无法识别提示。我很沮丧。经过收集,我们发现了一些草组方法可以解决这个问题。现在,让我们与你分享,希望能帮助你。 插入U盘后,执行以下步骤: 1.fdisk - L / dev / SD * 通…

字行间的空间如何删除

字行间的空间如何删除

删除,空间,电脑软件,问:我如何删除在字行间的空间 uff1a解 方法:在空白行由del 方法:两行按del行 方案三:在开始下一行行退格…

Adobe没有得到苹果的支持,停止开发

Adobe没有得到苹果的支持,停止开发

支持,电脑软件,Adobe,Flash,11月10日消息,据国外媒体报道,Adobe向许多开发商表示,将停止开发手机版的Flash播放器软件。 在Flash失去苹果的iOS设备一年后,Adobe的移动是一个重要的步骤,已故的苹果联合创始人史蒂夫·乔布斯给出了很多IOS不支持Fl…