<?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>The Rpsl Blog &#187; sql</title>
	<atom:link href="http://blog.rpsl.info/tag/sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.rpsl.info</link>
	<description></description>
	<lastBuildDate>Sun, 20 May 2012 12:09:21 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Кэширование MySQL &#8212; MySimpleCache</title>
		<link>http://blog.rpsl.info/2010/07/kehshirovanie-mysql-mysimplecache/</link>
		<comments>http://blog.rpsl.info/2010/07/kehshirovanie-mysql-mysimplecache/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 17:33:43 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Полезное]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[memcache]]></category>
		<category><![CDATA[mysimplecache]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=2294</guid>
		<description><![CDATA[Собственно возвращаясь к прошлому посту &#8212; &#171;PHP Кэширование MySQL, хочу сказать спасибо всем, кто помог советами. По разным причинам, спустя несколько дней после прошлого поста, я все таки сел и написал этот велосипед. Перевел на него десяток говносайтов и наблюдал две недели за их поведением. Проблем не заметил, все работает хорошо, нагрузка на базу данных значительно упала, а это именно то, что и требовалось. Проект поселился на github.com, маловероятно, но возможно он еще будет обновляться, так что актуальная версия всегда там. Логика работы проста. Что бы закэшировать MySQL запрос, вы подключаете класс и делаете замену стандартных вызовов, на вызовы функций [...]]]></description>
			<content:encoded><![CDATA[<p>Собственно возвращаясь к прошлому посту &#8212; &#171;<strong><a href="http://blog.rpsl.info/2010/06/php-keshirovanie-mysql.html">PHP Кэширование MySQL</a></strong>, хочу сказать спасибо всем, кто помог советами.</p>
<p>По разным причинам, спустя несколько дней после прошлого поста, я все таки сел и написал этот велосипед. Перевел на него десяток говносайтов и наблюдал две недели за их поведением.</p>
<p>Проблем не заметил, все работает хорошо, нагрузка на базу данных значительно упала, а это именно то, что и требовалось.</p>
<p>Проект поселился на <a href="http://github.com/Rpsl/MySimpleCache">github.com</a>, маловероятно, но возможно он еще будет обновляться, так что актуальная версия всегда там.<br />
<a href="http://github.com/Rpsl/MySimpleCache"><img src="http://blog.rpsl.info/wp-content/uploads/2010/07/mysimplecache.png" alt="" width="214" height="119" class="aligncenter size-full wp-image-2295 colorbox-2294" /></a></p>
<p>Логика работы проста. Что бы <strong>закэшировать MySQL</strong> запрос, вы подключаете класс и делаете замену стандартных вызовов, на вызовы функций кеширования. Они являются синонимами, а значит вам нужно только перед вызовом дописать название класса.</p>
<p>При вызове mysql_query, скрипт попытается закешировать данный запрос и либо вернет ссылку на закешированный массив, либо вернет ссылку на ресурс.</p>
<p>Все последующие операции будут проверять является ли ссылка ресурсом и уже по обстоятельствам будут либо доставать данные из <strong>memcache</strong>, либо получать их напрямую.</p>
<p>Буду рад любым комментариям и повторяю еще раз, что крайне не рекомендую прикручивать этот скрипт на сайты которые чуть более серьезнее чем сателит.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2010/07/kehshirovanie-mysql-mysimplecache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Joins Виды, типы, различия.</title>
		<link>http://blog.rpsl.info/2009/07/sql-joins-vidy-tipy-razlichiya/</link>
		<comments>http://blog.rpsl.info/2009/07/sql-joins-vidy-tipy-razlichiya/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 18:56:43 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[Полезное]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[join]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=307</guid>
		<description><![CDATA[В первую очередь шпаргалка для себя, но надеюсь кому нибудь окажется полезным. Для начала оговорим, что у нас есть две таблицы: Table A и Table B: id name id name &#8212; &#8212;- &#8212; &#8212;- 1 Pirate 1 Rutabaga 2 Monkey 2 Pirate 3 Ninja 3 Darth Vader 4 Spaghetti 4 Ninja Теперь можно рассмотреть, варианты и различия возможных JOIN запросов. Inner join выведет записи, которые соответствуют  таблице A и таблице B. SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name id name id name &#8212; &#8212;- &#8212; &#8212;- 1 Pirate 2 Pirate 3 Ninja 4 Ninja Full outer [...]]]></description>
			<content:encoded><![CDATA[<p>В первую очередь шпаргалка для себя, но надеюсь кому нибудь окажется полезным.</p>
<p>Для начала оговорим, что у нас есть две таблицы: <strong>Table A</strong> и <strong>Table B</strong>:</p>
<blockquote><p>id name       id  name<br />
&#8212; &#8212;-       &#8212;  &#8212;-<br />
1  <span style="color: red">Pirate</span> 1   Rutabaga<br />
2  Monkey     2   <span style="color: red">Pirate</span><br />
3  <span style="color: red">Ninja</span> 3   Darth Vader<br />
4  Spaghetti  4   <span style="color: red">Ninja<br />
</span></p></blockquote>
<p>Теперь можно рассмотреть, варианты и различия возможных JOIN запросов.</p>
<p><strong>Inner join</strong> выведет записи, которые соответствуют  таблице A и таблице B.</p>
<blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-inner.png"><img class="alignright size-thumbnail wp-image-308 colorbox-307" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-inner-150x150.png" alt="join-inner" width="150" height="150" /></a></p>
<p>SELECT * FROM TableA<br />
<strong>INNER JOIN</strong> TableB<br />
ON TableA.name = TableB.name</p>
<p>id  name       id   name<br />
&#8212;  &#8212;-       &#8212;   &#8212;-<br />
1   Pirate     2    Pirate<br />
3   Ninja      4    Ninja</p></blockquote>
<p><span id="more-307"></span></p>
<p><strong>Full outer join</strong> выведет все записи из Таблицы A и Таблицы B,  сопоставив данные из обеих таблиц, если в одной из таблиц данные отсутсвуют, то результатом для данной ячейки будет &#171;NULL&#187;</p>
<blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-cartesian.png"><img class="alignright size-thumbnail wp-image-314 colorbox-307" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-cartesian-150x150.png" alt="join-cartesian" width="150" height="150" /></a>SELECT * FROM TableA<br />
<strong>FULL OUTER JOIN</strong> TableB<br />
ON TableA.name = TableB.name</p>
<p>id    name       id    name<br />
&#8212;    &#8212;-       &#8212;    &#8212;-<br />
1     Pirate     2     Pirate<br />
2     Monkey     <span style="color: gray">null</span> <span style="color: gray">null</span><br />
3     Ninja      4     Ninja<br />
4     Spaghetti  <span style="color: gray">null</span> <span style="color: gray">null</span><br />
<span style="color: gray">null</span> <span style="color: gray">null</span> 1     Rutabaga<br />
<span style="color: gray">null</span> <span style="color: gray">null</span> 3     Darth Vader</p></blockquote>
<p><strong>Left outer join</strong> выведет данные из Таблицы A, с сопутсвующими данными из Таблицы B. Если подходящих данных в Таблице B нету, то будет выбран &#171;NULL&#187;</p>
<blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left.png"><img class="alignright size-thumbnail wp-image-316 colorbox-307" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left-150x150.png" alt="join-left" width="150" height="150" /></a>SELECT * FROM TableA<br />
<strong>LEFT OUTER JOIN</strong> TableB<br />
ON TableA.name = TableB.name</p>
<p>id  name       id    name<br />
&#8212;  &#8212;-       &#8212;    &#8212;-<br />
1   Pirate     2     Pirate<br />
2   Monkey     <span style="color: gray">null</span> <span style="color: gray">null</span><br />
3   Ninja      4     Ninja<br />
4   Spaghetti  <span style="color: gray">null</span> <span style="color: gray">null</span></p></blockquote>
<p>Оперируя прошлым примером, нам не составит труда достать только те данные, которые есть в Таблице A, для этого нужно использовть <strong> left outer join</strong>, с исключением пустых записей из Таблицы B</p>
<blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left-outer.png"><img class="alignright size-thumbnail wp-image-318 colorbox-307" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left-outer-150x150.png" alt="join-left-outer" width="150" height="150" /></a>SELECT * FROM TableA<br />
LEFT OUTER JOIN TableB<br />
ON TableA.name = TableB.name<br />
<strong>WHERE TableB.id IS null</strong></p>
<p>id  name       id     name<br />
&#8212;  &#8212;-       &#8212;     &#8212;-<br />
2   Monkey     <span style="color: gray">null</span> <span style="color: gray">null</span><br />
4   Spaghetti  <span style="color: gray">null</span> <span style="color: gray">null</span></p></blockquote>
<p>А если, чуть чуть усложнить задачу, то мы лего достанем данные, которые не имеют ничего общего. Для этого нужно использовать <strong>full outer join</strong>.</p>
<blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-outer.png"><img class="alignright size-thumbnail wp-image-320 colorbox-307" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-outer-150x150.png" alt="join-outer" width="150" height="150" /></a>SELECT * FROM TableA<br />
FULL OUTER JOIN TableB<br />
ON TableA.name = TableB.name<br />
<strong>WHERE TableA.id IS null<br />
OR TableB.id IS null<br />
</strong><br />
id    name       id    name<br />
&#8212;    &#8212;-       &#8212;    &#8212;-<br />
2     Monkey     <span style="color: gray">null</span> <span style="color: gray">null</span><br />
4     Spaghetti  <span style="color: gray">null</span> <span style="color: gray">null</span><br />
<span style="color: gray">null</span> <span style="color: gray">null</span> 1     Rutabaga<br />
<span style="color: gray">null</span> <span style="color: gray">null</span> 3     Darth Vader</p></blockquote>
<p>Вот собственно и всё. Всё просто.</p>
<p>P.s. Данная статья является вольным переводом некой статьи, авторство которой мне не известно.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2009/07/sql-joins-vidy-tipy-razlichiya/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

