<?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>Tue, 24 Jan 2012 11:35:02 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</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[Собственно возвращаясь к прошлому посту - "PHP Кэширование MySQL, хочу сказать спасибо всем, кто помог советами. По разным причинам, спустя несколько дней после прошлого поста, я все таки сел и написал этот велосипед. Перевел на него десяток говносайтов и наблюдал две недели за их поведением. Проблем не заметил, все работает хорошо, нагрузка на базу данных значительно упала, а это именно то, что и требовалось. Проект поселился на github.com, маловероятно, но возможно он еще будет обновляться, так что актуальная версия всегда там. Логика работы проста. Что бы закэшировать MySQL запрос, вы подключаете класс и делаете замену стандартных вызовов, на вызовы функций [...]]]></description>
			<content:encoded><![CDATA[Собственно возвращаясь к прошлому посту - "<strong><a href="http://blog.rpsl.info/2010/06/php-keshirovanie-mysql.html">PHP Кэширование MySQL</a></strong>, хочу сказать спасибо всем, кто помог советами.

По разным причинам, спустя несколько дней после прошлого поста, я все таки сел и написал этот велосипед. Перевел на него десяток говносайтов и наблюдал две недели за их поведением.

Проблем не заметил, все работает хорошо, нагрузка на базу данных значительно упала, а это именно то, что и требовалось.

Проект поселился на <a href="http://github.com/Rpsl/MySimpleCache">github.com</a>, маловероятно, но возможно он еще будет обновляться, так что актуальная версия всегда там.
<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>

Логика работы проста. Что бы <strong>закэшировать MySQL</strong> запрос, вы подключаете класс и делаете замену стандартных вызовов, на вызовы функций кеширования. Они являются синонимами, а значит вам нужно только перед вызовом дописать название класса.

При вызове mysql_query, скрипт попытается закешировать данный запрос и либо вернет ссылку на закешированный массив, либо вернет ссылку на ресурс.

Все последующие операции будут проверять является ли ссылка ресурсом и уже по обстоятельствам будут либо доставать данные из <strong>memcache</strong>, либо получать их напрямую.

Буду рад любым комментариям и повторяю еще раз, что крайне не рекомендую прикручивать этот скрипт на сайты которые чуть более серьезнее чем сателит.
]]></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 -- ---- -- ---- 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 -- ---- -- ---- 1 Pirate 2 Pirate 3 Ninja 4 Ninja Full outer [...]]]></description>
			<content:encoded><![CDATA[В первую очередь шпаргалка для себя, но надеюсь кому нибудь окажется полезным.

Для начала оговорим, что у нас есть две таблицы: <strong>Table A</strong> и <strong>Table B</strong>:
<blockquote>id name       id  name
-- ----       --  ----
1  <span style="color: red">Pirate</span> 1   Rutabaga
2  Monkey     2   <span style="color: red">Pirate</span>
3  <span style="color: red">Ninja</span> 3   Darth Vader
4  Spaghetti  4   <span style="color: red">Ninja
</span></blockquote>
Теперь можно рассмотреть, варианты и различия возможных JOIN запросов.

<strong>Inner join</strong> выведет записи, которые соответствуют  таблице A и таблице B.
<blockquote><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>

SELECT * FROM TableA
<strong>INNER JOIN</strong> TableB
ON TableA.name = TableB.name

id  name       id   name
--  ----       --   ----
1   Pirate     2    Pirate
3   Ninja      4    Ninja</blockquote>
<span id="more-307"></span>

<strong>Full outer join</strong> выведет все записи из Таблицы A и Таблицы B,  сопоставив данные из обеих таблиц, если в одной из таблиц данные отсутсвуют, то результатом для данной ячейки будет "NULL"
<blockquote><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
<strong>FULL OUTER JOIN</strong> TableB
ON TableA.name = TableB.name

id    name       id    name
--    ----       --    ----
1     Pirate     2     Pirate
2     Monkey     <span style="color: gray">null</span> <span style="color: gray">null</span>
3     Ninja      4     Ninja
4     Spaghetti  <span style="color: gray">null</span> <span style="color: gray">null</span>
<span style="color: gray">null</span> <span style="color: gray">null</span> 1     Rutabaga
<span style="color: gray">null</span> <span style="color: gray">null</span> 3     Darth Vader</blockquote>
<strong>Left outer join</strong> выведет данные из Таблицы A, с сопутсвующими данными из Таблицы B. Если подходящих данных в Таблице B нету, то будет выбран "NULL"
<blockquote><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
<strong>LEFT OUTER JOIN</strong> TableB
ON TableA.name = TableB.name

id  name       id    name
--  ----       --    ----
1   Pirate     2     Pirate
2   Monkey     <span style="color: gray">null</span> <span style="color: gray">null</span>
3   Ninja      4     Ninja
4   Spaghetti  <span style="color: gray">null</span> <span style="color: gray">null</span></blockquote>
Оперируя прошлым примером, нам не составит труда достать только те данные, которые есть в Таблице A, для этого нужно использовть <strong> left outer join</strong>, с исключением пустых записей из Таблицы B
<blockquote><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
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name
<strong>WHERE TableB.id IS null</strong>

id  name       id     name
--  ----       --     ----
2   Monkey     <span style="color: gray">null</span> <span style="color: gray">null</span>
4   Spaghetti  <span style="color: gray">null</span> <span style="color: gray">null</span></blockquote>
А если, чуть чуть усложнить задачу, то мы лего достанем данные, которые не имеют ничего общего. Для этого нужно использовать <strong>full outer join</strong>.
<blockquote><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
FULL OUTER JOIN TableB
ON TableA.name = TableB.name
<strong>WHERE TableA.id IS null
OR TableB.id IS null
</strong>
id    name       id    name
--    ----       --    ----
2     Monkey     <span style="color: gray">null</span> <span style="color: gray">null</span>
4     Spaghetti  <span style="color: gray">null</span> <span style="color: gray">null</span>
<span style="color: gray">null</span> <span style="color: gray">null</span> 1     Rutabaga
<span style="color: gray">null</span> <span style="color: gray">null</span> 3     Darth Vader</blockquote>
Вот собственно и всё. Всё просто.

P.s. Данная статья является вольным переводом некой статьи, авторство которой мне не известно.]]></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>

