<?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>Neo&#039;s notes &#187; MySQL</title>
	<atom:link href="http://www.neocanable.com/category/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.neocanable.com</link>
	<description>记录一些琐碎的技术问题&#124;发泄胸中的各种不满</description>
	<lastBuildDate>Tue, 17 Jan 2012 05:37:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>mysql数据库中空名字的用户</title>
		<link>http://www.neocanable.com/mysql-user-name-nul/</link>
		<comments>http://www.neocanable.com/mysql-user-name-nul/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 19:18:03 +0000</pubDate>
		<dc:creator>Neo</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.neocanable.com/?p=593</guid>
		<description><![CDATA[mysql中的mysql.user表里面千万不能有名字为空或者null的用户，修改起来伤不起啊 如何&#8211;skip-grant-tables都没用，当发现有了空的用户名，就会茅厕顿开]]></description>
			<content:encoded><![CDATA[<p>mysql中的mysql.user表里面千万不能有名字为空或者null的用户，修改起来伤不起啊</p>
<p>如何&#8211;skip-grant-tables都没用，当发现有了空的用户名，就会茅厕顿开</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neocanable.com/mysql-user-name-nul/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>thinking_sphinx  ambiguous error</title>
		<link>http://www.neocanable.com/thinking-sphinx/</link>
		<comments>http://www.neocanable.com/thinking-sphinx/#comments</comments>
		<pubDate>Sat, 03 Sep 2011 09:30:00 +0000</pubDate>
		<dc:creator>Neo</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.neocanable.com/?p=381</guid>
		<description><![CDATA[ERROR: index &#8216;listing_core&#8217;: sql_range_query: Column &#8216;latitude&#8217; in field list is ambiguous (DSN=mysql://root:***@localhost:3306/ listings_development). 这个就是mysql多表查询时，相同字段的冲突问题！ 原来用thinking_sphinx在生成索有链接表得时候，那么有得时候会这样处理 class A &#160; has_many :bs &#160; define_index do &#160; &#160; indexes &#34;LOWER(name)&#34;, :as =&#62; name &#160; &#160; indexes &#160;bs.name, :as =&#62; bs_name &#160; end as表中有name列，bs表中也有，那么sphinx在生成索引得时候就不知道用哪个了，所以它觉得“暧昧”! 修正方法 indexes &#34;LOWER(as.name)&#34;, :as =&#62; :name]]></description>
			<content:encoded><![CDATA[<p>ERROR: index &#8216;listing_core&#8217;: sql_range_query: Column &#8216;latitude&#8217; in<br />
field list is ambiguous (DSN=mysql://root:***@localhost:3306/<br />
listings_development). </p>
<p>这个就是mysql多表查询时，相同字段的冲突问题！</p>
<p>原来用thinking_sphinx在生成索有链接表得时候，那么有得时候会这样处理</p>
<div class="codecolorer-container ruby vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#9966CC; font-weight:bold;">class</span> A<br />
&nbsp; has_many <span style="color:#ff3333; font-weight:bold;">:bs</span><br />
&nbsp; define_index <span style="color:#9966CC; font-weight:bold;">do</span> <br />
&nbsp; &nbsp; indexes <span style="color:#996600;">&quot;LOWER(name)&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:as</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> name<br />
&nbsp; &nbsp; indexes &nbsp;bs.<span style="color:#9900CC;">name</span>, <span style="color:#ff3333; font-weight:bold;">:as</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> bs_name<br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span></div></div>
<p>as表中有name列，bs表中也有，那么sphinx在生成索引得时候就不知道用哪个了，所以它觉得“暧昧”!</p>
<p>修正方法</p>
<div class="codecolorer-container ruby vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">indexes <span style="color:#996600;">&quot;LOWER(as.name)&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:as</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:name</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.neocanable.com/thinking-sphinx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysql存储过程学习-分割字符串</title>
		<link>http://www.neocanable.com/mysql-split-string/</link>
		<comments>http://www.neocanable.com/mysql-split-string/#comments</comments>
		<pubDate>Mon, 25 Apr 2011 13:04:28 +0000</pubDate>
		<dc:creator>Neo</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.neocanable.com/?p=329</guid>
		<description><![CDATA[DELIMITER // DROP PROCEDURE IF EXISTS split_string; CREATE PROCEDURE split_string&#40;IN to_split VARCHAR&#40;255&#41;, IN split_with VARCHAR&#40;100&#41;&#41; BEGIN &#160; DECLARE total_length INT; &#160; DECLARE location INT; &#160; DROP TEMPORARY TABLE IF EXISTS temp_store; &#160; CREATE TEMPORARY TABLE temp_store&#40;str VARCHAR&#40;100&#41;&#41;; &#160; WHILE LENGTH&#40;to_split&#41; &#62; 0 &#160;DO &#160; &#160; SET total_length = LENGTH&#40;to_split&#41;; &#160; &#160; SET location &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<div class="codecolorer-container sql vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">DELIMITER <span style="color: #66cc66;">//</span><br />
<br />
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">PROCEDURE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> split_string;<br />
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">PROCEDURE</span> split_string<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">IN</span> to_split <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">IN</span> split_with <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">BEGIN</span><br />
&nbsp; <span style="color: #993333; font-weight: bold;">DECLARE</span> total_length <span style="color: #993333; font-weight: bold;">INT</span>;<br />
&nbsp; <span style="color: #993333; font-weight: bold;">DECLARE</span> location <span style="color: #993333; font-weight: bold;">INT</span>;<br />
&nbsp; <span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TEMPORARY</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> temp_store;<br />
&nbsp; <span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TEMPORARY</span> <span style="color: #993333; font-weight: bold;">TABLE</span> temp_store<span style="color: #66cc66;">&#40;</span>str <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;<br />
<br />
&nbsp; WHILE <span style="color: #993333; font-weight: bold;">LENGTH</span><span style="color: #66cc66;">&#40;</span>to_split<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&gt;</span> <span style="color: #cc66cc;">0</span> &nbsp;DO<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SET</span> total_length <span style="color: #66cc66;">=</span> <span style="color: #993333; font-weight: bold;">LENGTH</span><span style="color: #66cc66;">&#40;</span>to_split<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SET</span> location &nbsp; &nbsp; <span style="color: #66cc66;">=</span> LOCATE<span style="color: #66cc66;">&#40;</span>split_with<span style="color: #66cc66;">,</span> to_split<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">IF</span> location <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> <span style="color: #993333; font-weight: bold;">THEN</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> temp_store<span style="color: #66cc66;">&#40;</span>str<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUE</span><span style="color: #66cc66;">&#40;</span>to_split<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SET</span> to_split <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">''</span>;<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">ELSE</span>&nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> temp_store<span style="color: #66cc66;">&#40;</span>str<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUE</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">LEFT</span><span style="color: #66cc66;">&#40;</span>to_split<span style="color: #66cc66;">,</span> location<span style="color: #66cc66;">-</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SET</span> to_split <span style="color: #66cc66;">=</span> <span style="color: #993333; font-weight: bold;">RIGHT</span><span style="color: #66cc66;">&#40;</span>to_split<span style="color: #66cc66;">,</span> total_length<span style="color: #66cc66;">-</span>location<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">END</span> <span style="color: #993333; font-weight: bold;">IF</span>; &nbsp; <br />
&nbsp; <span style="color: #993333; font-weight: bold;">END</span> WHILE;<br />
<br />
&nbsp; <span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> temp_store;<br />
<span style="color: #993333; font-weight: bold;">END</span><br />
<span style="color: #66cc66;">//</span><br />
DELIMITER ;</div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.neocanable.com/mysql-split-string/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>当心where中的常量</title>
		<link>http://www.neocanable.com/where-tips/</link>
		<comments>http://www.neocanable.com/where-tips/#comments</comments>
		<pubDate>Sat, 16 Apr 2011 13:56:00 +0000</pubDate>
		<dc:creator>Neo</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.neocanable.com/?p=306</guid>
		<description><![CDATA[mysql&#62; SELECT COUNT&#40;*&#41; FROM articles_categories WHERE id=1; +----------+ &#124; COUNT&#40;*&#41; &#124; +----------+ &#124; &#160; &#160; &#160; &#160;1 &#124; +----------+ 1 ROW IN SET &#40;0.00 sec&#41; mysql&#62; SELECT COUNT&#40;*&#41; FROM articles_categories WHERE id=1 OR 1&#60;=1; +----------+ &#124; COUNT&#40;*&#41; &#124; +----------+ &#124; &#160; &#160; &#160;136 &#124; +----------+ 1 ROW IN SET &#40;0.00 sec&#41; 到底发生了什么？ mysql&#62; EXPLAIN extended [...]]]></description>
			<content:encoded><![CDATA[<div class="codecolorer-container sql vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mysql<span style="color: #66cc66;">&gt;</span> <span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">COUNT</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> articles_categories <span style="color: #993333; font-weight: bold;">WHERE</span> id<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span>;<br />
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">----------+</span><br />
<span style="color: #66cc66;">|</span> <span style="color: #993333; font-weight: bold;">COUNT</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">|</span><br />
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">----------+</span><br />
<span style="color: #66cc66;">|</span> &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">|</span><br />
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">----------+</span><br />
<span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">ROW</span> <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #993333; font-weight: bold;">SET</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0.00</span> sec<span style="color: #66cc66;">&#41;</span><br />
<br />
mysql<span style="color: #66cc66;">&gt;</span> <span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">COUNT</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> articles_categories <span style="color: #993333; font-weight: bold;">WHERE</span> id<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">OR</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&lt;=</span><span style="color: #cc66cc;">1</span>;<br />
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">----------+</span><br />
<span style="color: #66cc66;">|</span> <span style="color: #993333; font-weight: bold;">COUNT</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">|</span><br />
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">----------+</span><br />
<span style="color: #66cc66;">|</span> &nbsp; &nbsp; &nbsp;<span style="color: #cc66cc;">136</span> <span style="color: #66cc66;">|</span><br />
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">----------+</span><br />
<span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">ROW</span> <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #993333; font-weight: bold;">SET</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0.00</span> sec<span style="color: #66cc66;">&#41;</span></div></div>
<p>到底发生了什么？</p>
<div class="codecolorer-container sql vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mysql<span style="color: #66cc66;">&gt;</span> <span style="color: #993333; font-weight: bold;">EXPLAIN</span> extended <span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">COUNT</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> articles_categories <span style="color: #993333; font-weight: bold;">WHERE</span> id<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">OR</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&lt;=</span><span style="color: #cc66cc;">1</span>;<br />
mysql<span style="color: #66cc66;">&gt;</span> <span style="color: #993333; font-weight: bold;">SHOW</span> warnings\G<br />
<br />
<span style="color: #66cc66;">***************************</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">.</span> <span style="color: #993333; font-weight: bold;">ROW</span> <span style="color: #66cc66;">***************************</span><br />
&nbsp; Level: Note<br />
&nbsp; &nbsp;Code: <span style="color: #cc66cc;">1003</span><br />
Message: <span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">COUNT</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #ff0000;">`count(*)`</span> <span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #ff0000;">`demo`</span><span style="color: #66cc66;">.</span><span style="color: #ff0000;">`articles_categories`</span> <span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #cc66cc;">1</span><br />
<span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">ROW</span> <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #993333; font-weight: bold;">SET</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0.00</span> sec<span style="color: #66cc66;">&#41;</span></div></div>
<p>是了where id=1 or 1<=1和where 1是等同的</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neocanable.com/where-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysql loose index scan</title>
		<link>http://www.neocanable.com/mysql-loose-index-scan/</link>
		<comments>http://www.neocanable.com/mysql-loose-index-scan/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 14:24:19 +0000</pubDate>
		<dc:creator>Neo</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.neocanable.com/?p=246</guid>
		<description><![CDATA[场景：group by、distinct 表users: CREATE TABLE people&#40; &#160; &#160; user_id INT NOT NULL AUTO_INCREMENT, &#160; &#160; username VARCHAR&#40;50&#41; NOT NULL, &#160; &#160; province VARCHAR&#40;100&#41; NOT NULL, &#160; &#160; city VARCHAR&#40;100&#41; NOT NULL, &#160; &#160; street VARCHAR&#40;150&#41; NOT NULL, &#160; &#160; PRIMARY KEY&#40;id&#41;, &#160; &#160; INDEX pos&#40;province,city,street&#41; &#41;; 这里向people随机插入60000条数据 看下面的查询: &#160;EXPLAIN &#160;SELECT province,city,street &#160; &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>场景：group by、distinct<br />
表users:</p>
<div class="codecolorer-container sql vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> people<span style="color: #66cc66;">&#40;</span><br />
&nbsp; &nbsp; user_id <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AUTO_INCREMENT</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; username <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; province <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; city <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; street <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">150</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span><span style="color: #66cc66;">&#40;</span>id<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span><br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">INDEX</span> pos<span style="color: #66cc66;">&#40;</span>province<span style="color: #66cc66;">,</span>city<span style="color: #66cc66;">,</span>street<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#41;</span>;</div></div>
<p>这里向people随机插入60000条数据</p>
<p>看下面的查询:</p>
<div class="codecolorer-container sql vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;<span style="color: #993333; font-weight: bold;">EXPLAIN</span> &nbsp;<span style="color: #993333; font-weight: bold;">SELECT</span> province<span style="color: #66cc66;">,</span>city<span style="color: #66cc66;">,</span>street <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">FROM</span> people <span style="color: #993333; font-weight: bold;">WHERE</span> province<span style="color: #66cc66;">=</span><span style="color: #ff0000;">'Beijing'</span> <span style="color: #993333; font-weight: bold;">AND</span> city<span style="color: #66cc66;">=</span><span style="color: #ff0000;">'Haidian'</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">GROUP</span> <span style="color: #993333; font-weight: bold;">BY</span> province<span style="color: #66cc66;">,</span>city<span style="color: #66cc66;">,</span>street;</div></div>
<p>在Extra中会看到这样的现实 Using where; Using index for group-by</p>
<p>这样说明mysql在查询中使用了loose index scan(松散的索引扫描)</p>
<p>原理：<br />
    1.mysql首先扫描索引，找到key中的province是Beijing的<br />
    2.继续扫描索引，查询到city是Haidian的，这样就组成了一个元组<Beijing,Haidian>,中间跳过了类似<Beijing,Gaidian>这样的索引<br />
    3.继续扫描剩下的以<Beijing,Haidian>开头的索引，扫描完成后通过索引的指针得到查询结果，在这个时候，mysql已经不需要再去执行group by了，因为得到的结果已经是分完组的</p>
<p>    最坏的时候是不存在类似province=&#8217;Beijing&#8217;或者province>&#8217;Beijing&#8217;这样的情况，那么，查询将扫描全表的索引，然后分组<br />
    从上面可以看出，所给出的条件越多，需要扫描的索引就越少<br />
    支持max,min的查询，因为max就是取最后一行，而min就是取第一行</p>
<p>    loose index scan的适用情况</p>
<p>    扫描全部的索引</p>
<div class="codecolorer-container sql vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> province<span style="color: #66cc66;">,</span>city <span style="color: #993333; font-weight: bold;">FROM</span> people <span style="color: #993333; font-weight: bold;">GROUP</span> <span style="color: #993333; font-weight: bold;">BY</span> province<span style="color: #66cc66;">,</span>city;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">DISTINCT</span> province<span style="color: #66cc66;">,</span>city <span style="color: #993333; font-weight: bold;">FROM</span> people <span style="color: #993333; font-weight: bold;">GROUP</span> <span style="color: #993333; font-weight: bold;">BY</span> province<span style="color: #66cc66;">,</span>city<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SELECT</span> province<span style="color: #66cc66;">,</span>city <span style="color: #993333; font-weight: bold;">FROM</span> people <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">WHERE</span> province<span style="color: #66cc66;">=</span><span style="color: #ff0000;">'Beijing'</span> <span style="color: #993333; font-weight: bold;">GROUP</span> <span style="color: #993333; font-weight: bold;">BY</span> province<span style="color: #66cc66;">,</span>city;</div></div>
<p>这个是取第一个结果就OK了</p>
<div class="codecolorer-container sql vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> province<span style="color: #66cc66;">,</span><span style="color: #993333; font-weight: bold;">MIN</span><span style="color: #66cc66;">&#40;</span>city<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> people <span style="color: #993333; font-weight: bold;">GROUP</span> <span style="color: #993333; font-weight: bold;">BY</span> province<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SELECT</span> street<span style="color: #66cc66;">,</span>city<span style="color: #66cc66;">,</span>province <span style="color: #993333; font-weight: bold;">FROM</span> people <span style="color: #993333; font-weight: bold;">GROUP</span> <span style="color: #993333; font-weight: bold;">BY</span> province<span style="color: #66cc66;">,</span>city<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SELECT</span> province<span style="color: #66cc66;">,</span>city <span style="color: #993333; font-weight: bold;">FROM</span> people <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">WHERE</span> street<span style="color: #66cc66;">=</span><span style="color: #ff0000;">'111'</span> <span style="color: #993333; font-weight: bold;">GROUP</span> <span style="color: #993333; font-weight: bold;">BY</span> province<span style="color: #66cc66;">,</span>city</div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.neocanable.com/mysql-loose-index-scan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>添加与不添加索引的差距</title>
		<link>http://www.neocanable.com/mysql-btree-indexes/</link>
		<comments>http://www.neocanable.com/mysql-btree-indexes/#comments</comments>
		<pubDate>Sat, 26 Feb 2011 13:40:43 +0000</pubDate>
		<dc:creator>Neo</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.neocanable.com/?p=59</guid>
		<description><![CDATA[创建两张表user,user_on_index CREATE TABLE USER&#40; &#160; first_name VARCHAR&#40;50&#41; NOT NULL, &#160; last_name VARCHAR&#40;50&#41; NOT NULL, &#160; dob datetime NOT NULL, &#160; gender enum&#40;&#34;m&#34;,&#34;f&#34;&#41; NOT NULL, &#160; KEY&#40;first_name,last_name,dob&#41; &#41; CREATE TABLE user_no_index&#40; &#160; first_name VARCHAR&#40;50&#41; NOT NULL, &#160; last_name VARCHAR&#40;50&#41; NOT NULL, &#160; dob datetime NOT NULL, &#160; gender enum&#40;&#34;m&#34;,&#34;f&#34;&#41; NOT NULL &#41; 向两个表里面各插入10W数据(使用ruby脚本) &#62;&#62; 1.upto&#40;100000&#41; do [...]]]></description>
			<content:encoded><![CDATA[<p>创建两张表user,user_on_index</p>
<div class="codecolorer-container sql vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">USER</span><span style="color: #66cc66;">&#40;</span><br />
&nbsp; first_name <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; last_name <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; dob datetime <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; gender enum<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;m&quot;</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">&quot;f&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; <span style="color: #993333; font-weight: bold;">KEY</span><span style="color: #66cc66;">&#40;</span>first_name<span style="color: #66cc66;">,</span>last_name<span style="color: #66cc66;">,</span>dob<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#41;</span><br />
<br />
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> user_no_index<span style="color: #66cc66;">&#40;</span><br />
&nbsp; first_name <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; last_name <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; dob datetime <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; gender enum<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;m&quot;</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">&quot;f&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><br />
<span style="color: #66cc66;">&#41;</span></div></div>
<p>向两个表里面各插入10W数据(使用ruby脚本)</p>
<div class="codecolorer-container ruby vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#006600; font-weight:bold;">&gt;&gt;</span> <span style="color:#006666;">1</span>.<span style="color:#9900CC;">upto</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">100000</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>i<span style="color:#006600; font-weight:bold;">|</span><br />
?<span style="color:#006600; font-weight:bold;">&gt;</span> &nbsp; &nbsp; User.<span style="color:#9900CC;">create</span> <span style="color:#ff3333; font-weight:bold;">:first_name</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;meng&quot;</span><span style="color:#006600; font-weight:bold;">+</span>i.<span style="color:#9900CC;">to_s</span>,:last_name <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;qinglei&quot;</span><span style="color:#006600; font-weight:bold;">+</span>i.<span style="color:#9900CC;">to_s</span>,:dob <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>,:gender <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;m&quot;</span><br />
<span style="color:#006600; font-weight:bold;">&gt;&gt;</span> &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
<span style="color:#006600; font-weight:bold;">&gt;&gt;</span> <span style="color:#006666;">1</span>.<span style="color:#9900CC;">upto</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">100000</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>i<span style="color:#006600; font-weight:bold;">|</span><br />
?<span style="color:#006600; font-weight:bold;">&gt;</span> &nbsp; &nbsp; UserNoIndex.<span style="color:#9900CC;">create</span> <span style="color:#ff3333; font-weight:bold;">:first_name</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;meng&quot;</span><span style="color:#006600; font-weight:bold;">+</span>i.<span style="color:#9900CC;">to_s</span>,:last_name <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;qinglei&quot;</span><span style="color:#006600; font-weight:bold;">+</span>i.<span style="color:#9900CC;">to_s</span>,:dob <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>,:gender <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;m&quot;</span><br />
<span style="color:#006600; font-weight:bold;">&gt;&gt;</span> &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span></div></div>
<p>执行select SQL_NO_CACHE * from user where first_name like &#8220;meng100%&#8221;<br />
     select SQL_NO_CACHE * from user_no_index where first_name like &#8220;meng100%&#8221;<br />
时间差距很大</p>
<div class="codecolorer-container ruby vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;<span style="color:#CC0066; font-weight:bold;">p</span> <span style="color:#CC00FF; font-weight:bold;">Benchmark</span>.<span style="color:#9900CC;">realtime</span><span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;UserNoIndex.<span style="color:#9900CC;">find_by_sql</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;select SQL_NO_CACHE * from user_no_index where first_name like 'meng100%'&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#125;</span><br />
<span style="color:#006666;">0.0462138652801514</span><br />
<br />
<br />
&nbsp;<span style="color:#CC0066; font-weight:bold;">p</span> <span style="color:#CC00FF; font-weight:bold;">Benchmark</span>.<span style="color:#9900CC;">realtime</span><span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;User.<span style="color:#9900CC;">find_by_sql</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;select SQL_NO_CACHE * from user where first_name like 'meng100%'&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />
<span style="color:#006666;">0.00258684158325195</span><br />
<br />
&nbsp;a = <span style="color:#006666;">0.0462138652801514</span><br />
&nbsp;b = <span style="color:#006666;">0.00258684158325195</span><br />
&nbsp;a<span style="color:#006600; font-weight:bold;">/</span>b == <span style="color:#006666;">17.8649769585254</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.neocanable.com/mysql-btree-indexes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>mysql opened tables</title>
		<link>http://www.neocanable.com/mysql-opened-tables/</link>
		<comments>http://www.neocanable.com/mysql-opened-tables/#comments</comments>
		<pubDate>Mon, 04 Oct 2010 15:42:11 +0000</pubDate>
		<dc:creator>Neo</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.neocanable.com/?p=190</guid>
		<description><![CDATA[1.mysql&#8217;s opened_tables 查看mysql的opend_tables有两种方法，第一种是 1.show status like '%Opend_tables%'; &#160; &#160; &#160; &#160; +---------------+-------+ &#160; &#160; &#160; &#160; &#124; Variable_name &#124; Value &#124; &#160; &#160; &#160; &#160; +---------------+-------+ &#160; &#160; &#160; &#160; &#124; Opened_tables &#124; 0 &#160; &#160; &#124; &#160; &#160; &#160; &#160; +---------------+-------+ &#160; &#160; 2.mysqladmin -uroot -p status &#160; &#160; &#160; &#160; Uptime: 24704 &#160;Threads: [...]]]></description>
			<content:encoded><![CDATA[<p>1.mysql&#8217;s opened_tables<br />
查看mysql的opend_tables有两种方法，第一种是</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">1.show status like '%Opend_tables%';<br />
&nbsp; &nbsp; &nbsp; &nbsp; +---------------+-------+<br />
&nbsp; &nbsp; &nbsp; &nbsp; | Variable_name | Value |<br />
&nbsp; &nbsp; &nbsp; &nbsp; +---------------+-------+<br />
&nbsp; &nbsp; &nbsp; &nbsp; | Opened_tables | 0 &nbsp; &nbsp; |<br />
&nbsp; &nbsp; &nbsp; &nbsp; +---------------+-------+<br />
<br />
&nbsp; &nbsp; 2.mysqladmin -uroot -p status<br />
&nbsp; &nbsp; &nbsp; &nbsp; Uptime: 24704 &nbsp;Threads: 4 &nbsp;Questions: 5463 &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; Slow queries: 1 &nbsp;Opens: 1410 &nbsp;Flush tables: 1 &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; Open tables: 4 &nbsp;Queries per second avg: 0.221</div></div>
<p>有的时候出现opened_tables值是12,但是你只有2张表的时候,这个很两人费解</p>
<p>因为mysql是多线程的，所以有的时候连接数量多的话mysql的每个线程会以不同的状态去打开一个表</p>
<p>2.mysql怎样打开和关闭表<br />
    table_cache、max_connection和max_tmp_tables系统全局变量决定mysql打开的最大文件数，如果增大他们其中的一个或者多个，应该检查一下当前正在使用的操作系统每个进程最大的打开文件数</p>
<p>    table_cache与max_connections有关。例如，200个并发连接，至少要将table_cache的大小调整到200*N，N是一个查询里面join表的数量，还要额外的考虑到使用tempfile的情况。</p>
<p>    确定你的操作系统能够处理table_cache大小的打开文件数量，如果table_cache设置的很大，mysql会发生打开过量的文件，从而导致拒绝连接。也要注意myisam存储引擎，没个打开的table会维持两个文件句柄。配置mysql最大打开文件数量是open-files- limit。</p>
<p>table_cache默认的大小是64,mysql可能会维持更多的连接，以确保能正常的完成查询。</p>
<p>mysql 将一个table缓存删除的案例：</p>
<p>    1.table cache满了，但是某个线程打开一个表，并且表没有在缓存中。</p>
<p>    2.cache的数量超出了table_cahce的大小，并且一个被打开的表一段时间内不会再被用了。</p>
<p>    3.flush tables操作</p>
<p>handler table_name open打开一个表直到执行handler table_name close为止!</p>
<p><a href="http://www.devshed.com/c/a/MySQL/MySQL-Optimization-part-2/4/">http://www.devshed.com/c/a/MySQL/MySQL-Optimization-part-2/4/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.neocanable.com/mysql-opened-tables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>rails sphinx全文检索</title>
		<link>http://www.neocanable.com/rails-sphinx/</link>
		<comments>http://www.neocanable.com/rails-sphinx/#comments</comments>
		<pubDate>Sun, 26 Sep 2010 15:40:12 +0000</pubDate>
		<dc:creator>Neo</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Ruby On Rails]]></category>

		<guid isPermaLink="false">http://www.neocanable.com/?p=187</guid>
		<description><![CDATA[1.安装mmseg这个ruby中文分词的扩展 wget http://www.coreseek.cn/uploads/csft/3.1/Source/mmseg-3.1.tar.gz &#160; &#160; tar xzvf mmseg-3.1.tar.gz &#160; &#160; cd mmseg-3.1 &#160; &#160; chmod a+x configure &#160; &#160; ./configure &#38;&#38; make &#38;&#38; make install 安装ruby扩展 cd ruby &#160; &#160; cp /usr/local/include/mmseg/*.h . &#160; &#160; cp ../src/*.h . &#160; &#160; cp ../src/css/*.h . &#160; &#160; ruby extconf.lin.rb &#160; &#160; make &#38;&#38; make install cd ../data [...]]]></description>
			<content:encoded><![CDATA[<p>1.安装mmseg这个ruby中文分词的扩展</p>
<div class="codecolorer-container ruby vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">wget http:<span style="color:#006600; font-weight:bold;">//</span>www.<span style="color:#9900CC;">coreseek</span>.<span style="color:#9900CC;">cn</span><span style="color:#006600; font-weight:bold;">/</span>uploads<span style="color:#006600; font-weight:bold;">/</span>csft<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">3.1</span><span style="color:#006600; font-weight:bold;">/</span>Source<span style="color:#006600; font-weight:bold;">/</span>mmseg<span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">3.1</span>.<span style="color:#9900CC;">tar</span>.<span style="color:#9900CC;">gz</span><br />
&nbsp; &nbsp; tar xzvf mmseg<span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">3.1</span>.<span style="color:#9900CC;">tar</span>.<span style="color:#9900CC;">gz</span><br />
&nbsp; &nbsp; cd mmseg<span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">3.1</span><br />
&nbsp; &nbsp; chmod a<span style="color:#006600; font-weight:bold;">+</span>x configure<br />
&nbsp; &nbsp; .<span style="color:#006600; font-weight:bold;">/</span>configure <span style="color:#006600; font-weight:bold;">&amp;&amp;</span> make <span style="color:#006600; font-weight:bold;">&amp;&amp;</span> make install</div></div>
<p>安装ruby扩展</p>
<div class="codecolorer-container ruby vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">cd ruby<br />
&nbsp; &nbsp; cp <span style="color:#006600; font-weight:bold;">/</span>usr<span style="color:#006600; font-weight:bold;">/</span>local<span style="color:#006600; font-weight:bold;">/</span><span style="color:#9966CC; font-weight:bold;">include</span><span style="color:#006600; font-weight:bold;">/</span>mmseg<span style="color:#006600; font-weight:bold;">/*</span>.<span style="color:#9900CC;">h</span> .<br />
&nbsp; &nbsp; <span style="color:#9900CC;">cp</span> ..<span style="color:#006600; font-weight:bold;">/</span>src<span style="color:#006600; font-weight:bold;">/*</span>.<span style="color:#9900CC;">h</span> .<br />
&nbsp; &nbsp; <span style="color:#9900CC;">cp</span> ..<span style="color:#006600; font-weight:bold;">/</span>src<span style="color:#006600; font-weight:bold;">/</span>css<span style="color:#006600; font-weight:bold;">/*</span>.<span style="color:#9900CC;">h</span> .<br />
&nbsp; &nbsp; <span style="color:#9900CC;">ruby</span> extconf.<span style="color:#9900CC;">lin</span>.<span style="color:#9900CC;">rb</span><br />
&nbsp; &nbsp; make <span style="color:#006600; font-weight:bold;">&amp;&amp;</span> make install</div></div>
<div class="codecolorer-container ruby vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">cd ..<span style="color:#006600; font-weight:bold;">/</span>data<br />
&nbsp; &nbsp; mmseg <span style="color:#006600; font-weight:bold;">-</span>u unigram.<span style="color:#9900CC;">txt</span><br />
&nbsp; &nbsp; 将生成的词库重命名为uni.<span style="color:#9900CC;">lib</span><br />
&nbsp; &nbsp; cp uni.<span style="color:#9900CC;">lib</span> ..<span style="color:#006600; font-weight:bold;">/</span>ruby<br />
&nbsp; &nbsp; cd ..<span style="color:#006600; font-weight:bold;">/</span>ruby<br />
&nbsp; &nbsp; ruby test.<span style="color:#9900CC;">rb</span></div></div>
<p>如果运行成功的话，安装完毕了</p>
<p>2.安装 csft3.2</p>
<div class="codecolorer-container ruby vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;wget http:<span style="color:#006600; font-weight:bold;">//</span>www.<span style="color:#9900CC;">coreseek</span>.<span style="color:#9900CC;">cn</span><span style="color:#006600; font-weight:bold;">/</span>uploads<span style="color:#006600; font-weight:bold;">/</span>csft<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">3.2</span><span style="color:#006600; font-weight:bold;">/</span>csft<span style="color:#006600; font-weight:bold;">-</span>3.2.12.<span style="color:#9900CC;">tar</span>.<span style="color:#9900CC;">gz</span><br />
&nbsp; &nbsp; tar xzvf csft<span style="color:#006600; font-weight:bold;">-</span>3.2.12.<span style="color:#9900CC;">tar</span>.<span style="color:#9900CC;">gz</span><br />
&nbsp; &nbsp; cd csft<span style="color:#006600; font-weight:bold;">-</span>3.2.12<br />
&nbsp; &nbsp; .<span style="color:#006600; font-weight:bold;">/</span>configure <span style="color:#006600; font-weight:bold;">--</span>with<span style="color:#006600; font-weight:bold;">-</span>mysql=<span style="color:#006600; font-weight:bold;">/</span>usr<span style="color:#006600; font-weight:bold;">/</span>local<span style="color:#006600; font-weight:bold;">/</span>mysql<br />
&nbsp; &nbsp; make <span style="color:#006600; font-weight:bold;">&amp;&amp;</span> make install</div></div>
<p>3.安装sphinx插件<br />
    ruby script\plugin install git://github.com/freelancing-god/thinking-sphinx.git<br />
    注释掉： Rails.configuration.cache_classes = false,这个在我这里是第行</p>
<p>    rake ts:config<br />
    vi config/development.sphinx.conf<br />
    将 charset_type = utf-8 改为 charset_type = zh_cn.utf-8<br />
    并且在下面添加：charset_dictpath = /usr/local/csft/var/data    # 这里的意思是存放词库的地址,也就是刚刚使用mmseg -u生成的那个文件</p>
<p>4.测试</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neocanable.com/rails-sphinx/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>mysql order by 优化</title>
		<link>http://www.neocanable.com/mysql-order-by-optimize/</link>
		<comments>http://www.neocanable.com/mysql-order-by-optimize/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 15:29:09 +0000</pubDate>
		<dc:creator>Neo</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.neocanable.com/?p=174</guid>
		<description><![CDATA[排序的时候能用到索引的,key为一个复合的索引 SELECT * FROM t1 ORDER BY key_part1,key_part2,... ; SELECT * FROM t1 WHERE key_part1=constant ORDER BY key_part2; SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 DESC; SELECT * FROM t1 WHERE key_part1=1 ORDER BY key_part1 DESC, key_part2 DESC; 不能使用索引排序的查询 1.不同的索引 SELECT * FROM t1 ORDER BY key1,key2 2.不连贯的索引使用 SELECT * FROM t1 WHERE [...]]]></description>
			<content:encoded><![CDATA[<p>排序的时候能用到索引的,key为一个复合的索引</p>
<div class="codecolorer-container sql vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> t1 <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> key_part1<span style="color: #66cc66;">,</span>key_part2<span style="color: #66cc66;">,...</span> ;<br />
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> t1 <span style="color: #993333; font-weight: bold;">WHERE</span> key_part1<span style="color: #66cc66;">=</span>constant <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> key_part2;<br />
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> t1 <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> key_part1 <span style="color: #993333; font-weight: bold;">DESC</span><span style="color: #66cc66;">,</span> key_part2 <span style="color: #993333; font-weight: bold;">DESC</span>;<br />
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> t1 <span style="color: #993333; font-weight: bold;">WHERE</span> key_part1<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> key_part1 <span style="color: #993333; font-weight: bold;">DESC</span><span style="color: #66cc66;">,</span> key_part2 <span style="color: #993333; font-weight: bold;">DESC</span>;</div></div>
<p>不能使用索引排序的查询</p>
<p>1.不同的索引</p>
<div class="codecolorer-container sql vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> t1 <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> key1<span style="color: #66cc66;">,</span>key2</div></div>
<p>2.不连贯的索引使用</p>
<div class="codecolorer-container sql vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> t1 <span style="color: #993333; font-weight: bold;">WHERE</span> key_part1<span style="color: #66cc66;">=</span><span style="color: #ff0000;">''</span> <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> key_part3</div></div>
<p>3.desc和asc混合</p>
<div class="codecolorer-container sql vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> t1 <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> key_pary1 <span style="color: #993333; font-weight: bold;">ASC</span><span style="color: #66cc66;">,</span>key_part2 <span style="color: #993333; font-weight: bold;">DESC</span></div></div>
<p>4.order by 里面有表达式</p>
<div class="codecolorer-container sql vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> t1 <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> abs<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">KEY</span><span style="color: #66cc66;">&#41;</span></div></div>
<p>5.join table 的时候，order by内不是第一个非常量表的</p>
<p>6.order by 在有OR字句的时候不起作用，一把使用union</p>
<div class="codecolorer-container sql vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> t1 force <span style="color: #993333; font-weight: bold;">INDEX</span> <span style="color: #66cc66;">&#40;</span>key1_key2_key3<span style="color: #66cc66;">&#41;</span> <br />
<span style="color: #993333; font-weight: bold;">WHERE</span> key1<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">OR</span> key1<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">2</span> <br />
<span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> key2<span style="color: #66cc66;">,</span>key3 <span style="color: #993333; font-weight: bold;">LIMIT</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">5</span>;</div></div>
<p>使用union的话会好一些:</p>
<div class="codecolorer-container sql vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> t1 force <span style="color: #993333; font-weight: bold;">INDEX</span> <span style="color: #66cc66;">&#40;</span>key1_key2_key3<span style="color: #66cc66;">&#41;</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">WHERE</span> key1<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">1</span> <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> key2<span style="color: #66cc66;">,</span>key3 <span style="color: #993333; font-weight: bold;">LIMIT</span> <span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">UNION</span> <br />
<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> t1 force <span style="color: #993333; font-weight: bold;">INDEX</span> <span style="color: #66cc66;">&#40;</span>key1_key2_key3<span style="color: #66cc66;">&#41;</span> <br />
&nbsp; &nbsp; &nbsp;<span style="color: #993333; font-weight: bold;">WHERE</span> key1<span style="color: #66cc66;">=</span><span style="color: #cc66cc;">2</span> <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> key2<span style="color: #66cc66;">,</span>key3 <span style="color: #993333; font-weight: bold;">LIMIT</span> <span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> key2<span style="color: #66cc66;">,</span>key3 <span style="color: #993333; font-weight: bold;">LIMIT</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">5</span></div></div>
<blockquote><p>mysql performace blog<br />
Suboptimal ORDER BY implementation, especially together with LIMIT is often the cause of MySQL<br />
Performance problems.<br />
Here is what you need to know about ORDER BY &#8230; LIMIT optimization to avoid these problems</p></blockquote>
<p><strong>不理想的order by语句，特别是和limit搭配在一起使用的，经常造成mysql的性能问题。</strong></p>
<p><a href="http://www.mysqlperformanceblog.com/2006/09/01/order-by-limit-performance-optimization/">http://www.mysqlperformanceblog.com/2006/09/01/order-by-limit-performance-optimization/<br />
</a><br />
mysql docs<br />
<a href="http://www.mysqlperformanceblog.com/2006/09/01/order-by-limit-performance-optimization/ mysql docs http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html">http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.neocanable.com/mysql-order-by-optimize/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysql子查询中使用sum排序</title>
		<link>http://www.neocanable.com/mysql-sum-sort-for-subquery/</link>
		<comments>http://www.neocanable.com/mysql-sum-sort-for-subquery/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 15:26:29 +0000</pubDate>
		<dc:creator>Neo</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.neocanable.com/?p=171</guid>
		<description><![CDATA[I&#8217;ve a basic table like and want to SUM the top 5 values. For example if I have id, rating 0, 10 1, 25 2, 5 3, 10 4, 50 5, 1 6, 15 7, 20 8, 9 I want my query to sum the values 4,50 1,25 7,20 6.15 0,10 Suming a value of [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>I&#8217;ve a basic table like and want to SUM the top 5 values.  For example if I<br />
have</p>
<p>id, rating<br />
0, 10<br />
1, 25<br />
2, 5<br />
3, 10<br />
4, 50<br />
5, 1<br />
6, 15<br />
7, 20<br />
8, 9</p>
<p>I want my query to sum the values</p>
<p>4,50<br />
1,25<br />
7,20<br />
6.15<br />
0,10</p>
<p>Suming a value of 120</p>
<p>Any suggestions on how to achieve this ?</p>
<p>Cheers
</p></blockquote>
<p>邮件列表里面的问题,我给的答案:</p>
<div class="codecolorer-container sql vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">SUM</span><span style="color: #66cc66;">&#40;</span>t1<span style="color: #66cc66;">.</span>rating<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> your_table t1 <span style="color: #993333; font-weight: bold;">JOIN</span> <br />
&nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> your_table <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> rating <span style="color: #993333; font-weight: bold;">DESC</span> <span style="color: #993333; font-weight: bold;">LIMIT</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span> t2 <br />
&nbsp; <span style="color: #993333; font-weight: bold;">ON</span> t1<span style="color: #66cc66;">.</span>rating<span style="color: #66cc66;">=</span>t2<span style="color: #66cc66;">.</span>rating</div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.neocanable.com/mysql-sum-sort-for-subquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

