<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>爱周末 &#187; php大数据</title>
	<atom:link href="http://zhoumo123.cn/tag/php%e5%a4%a7%e6%95%b0%e6%8d%ae/feed" rel="self" type="application/rss+xml" />
	<link>http://zhoumo123.cn</link>
	<description>知识分享，共同进步。zhoumo123.cn</description>
	<lastBuildDate>Thu, 07 Nov 2019 05:53:49 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.0.1</generator>
	<item>
		<title>php mysql分页大数据查询方案大数据优化</title>
		<link>http://zhoumo123.cn/php/3356.html</link>
		<comments>http://zhoumo123.cn/php/3356.html#comments</comments>
		<pubDate>Tue, 13 Oct 2015 09:15:46 +0000</pubDate>
		<dc:creator><![CDATA[zhangc]]></dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php大数据]]></category>

		<guid isPermaLink="false">http://zhoumo123.cn/?p=3356</guid>
		<description><![CDATA[如何将分页SQL做到更优化，让MySQL执行的更快的方法。 一般的情况下，我们的分页SQL语句是这样的： SELECT * FROM table ORDER BY id LIMIT 1000,10; 以上SQL语句在原理上和在实际操作中是不会存在什么问题，但是当table表的数据量达到几十万以上的时候，上面的语句执行一遍，可能会要执行个十几秒的时间，并且当页数越靠后的话，执行的时间会越长，这个时候我们就需要找到一种更快的查询办法来替代这种操作了。 网上已经有很多优化的方法，基本都是这样的： SELECT * FROM table WHERE id &#62;= (SELECT id FROM t ...  <a href="http://zhoumo123.cn/php/3356.html">  阅读全文 </a>]]></description>
				<content:encoded><![CDATA[<p>如何将分页SQL做到更优化，让MySQL执行的更快的方法。</p>
<p>一般的情况下，我们的分页SQL语句是这样的：</p>
<p><strong>SELECT * FROM table ORDER BY id LIMIT 1000,10;</strong><br />
以上SQL语句在原理上和在实际操作中是不会存在什么问题，但是当table表的数据量达到几十万以上的时候，上面的语句执行一遍，可能会要执行个十几秒的时间，并且当页数越靠后的话，执行的时间会越长，这个时候我们就需要找到一种更快的查询办法来替代这种操作了。</p>
<p>网上已经有很多优化的方法，基本都是这样的：</p>
<p><strong> SELECT * FROM table WHERE id &gt;= (SELECT id FROM table LIMIT 1000000, 1) LIMIT 10;</strong><br />
以上SQL语句是一个不错的解决方法，分页查询的速度基本会保持在1秒之内，但据经验总结得出还有一种更好的办法，如下：</p>
<p><strong> SELECT * FROM table WHERE id BETWEEN 1000000 AND 1000010;</strong><br />
相比以上的解决办法，在速度上还会快了不少。</p>
<p>另外分享两个关于查询的技巧：</p>
<p>（1）如果需要查询 id 不是连续的一段，最佳的做法就是先找出 id ，然后用 in 查询：</p>
<p><strong> SELECT * FROM table WHERE id IN(10000, 100000, 1000000&#8230;);</strong><br />
（2）当查询字段一较长字符串的时候，表设计时要为该字段多加一个字段，如存储网址的字段，在需要查询该字段的时候，不要直接查询字符串，效率低下，应该查诡该字串的crc32或md5值。</p>
]]></content:encoded>
			<wfw:commentRss>http://zhoumo123.cn/php/3356.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
