<?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>Pusher&#039;s home &#187; mysql</title>
	<atom:link href="http://pusher.kiev.ua/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://pusher.kiev.ua</link>
	<description>homepage&#38;blog</description>
	<lastBuildDate>Wed, 02 May 2012 22:58:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>mysql, postgre, mongodb и снова mysql</title>
		<link>http://pusher.kiev.ua/professional/work/mysql-postgre-mongodb-%d0%b8-%d1%81%d0%bd%d0%be%d0%b2%d0%b0-mysql/</link>
		<comments>http://pusher.kiev.ua/professional/work/mysql-postgre-mongodb-%d0%b8-%d1%81%d0%bd%d0%be%d0%b2%d0%b0-mysql/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 17:27:52 +0000</pubDate>
		<dc:creator>justpusher</dc:creator>
				<category><![CDATA[Работа]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[программирование]]></category>
		<category><![CDATA[работа]]></category>

		<guid isPermaLink="false">http://pusher.kiev.ua/?p=90</guid>
		<description><![CDATA[На работе столкнулся с досадным недостатком mysql: он не умеет делать слияние отсортированных индексом массивов. На пальцах: пусть есть таблица  objects (id, category_id, time) с индексом (category_id, time). Задача &#8211; выбрать среди данных нескольки категорий N последних. Запрос: SELECT  * FROM objects WHERE category_id IN (10,11,12,13, 14) ORDER BY time DESC LIMIT 10; даже не [...]]]></description>
			<content:encoded><![CDATA[<p>На работе столкнулся с досадным недостатком mysql: он не умеет делать слияние отсортированных индексом массивов.</p>
<p>На пальцах: пусть есть таблица  objects (id, category_id, time) с индексом (category_id, time). Задача &#8211; выбрать среди данных нескольки категорий N последних.</p>
<p>Запрос:<br />
SELECT  * FROM objects WHERE category_id IN (10,11,12,13, 14) ORDER BY time DESC LIMIT 10;<br />
даже не думает работать по индексу. Он отбирает все объекты из этих категорий, сортирует их filesort&#8217;ом и потом отбирает первые. Хотя очень логично поступить аналогично сортировке слиянием: взять отсортированные последовательности для каждой категории и сливать их, пока не получим N элементов.</p>
<p>Итак, мелькнула идея попробовать применить PostgreSQL. Поставил, перелил в него таблицу, сделал аналогичные запросы &#8211; он приятно удивил: 0.5-0.6 секунд против 2.5-3.0 в мускуле. Причём Постгре был под виндой, а Мускул под FreeBSD. Не могу точно утверждать, индексы разруливает лучше или просто сыграл тот факт, что движок быстрее (а он реально быстрее), потому что он и без проставленных индексов работал быстрее мускула (в районе 1.0-1.5 сек).</p>
<p>Я бы на этом и остановился, но шеф настоял, чтобы я попробовал MongoDB. Опустив лирику, могу только подписаться под резюме: &#8220;Быстрый, как понос&#8221;. Для той же самой задачи он дал результаты порядка 0.2-0.3 сек.</p>
<p>И уже все были готовы перейти на использование MongoDB, как вдруг мелькнула шальная мысль. Сделали копию таблицу в Mysql MEMORY engine, внесли данные в нужном порядке, убрали (!) все индексы. Ура! Результаты порядка 0.02-0.05 сек.</p>
<p>Что тут сказать&#8230; Универсальных решений не бывает, вот и всё.</p>
]]></content:encoded>
			<wfw:commentRss>http://pusher.kiev.ua/professional/work/mysql-postgre-mongodb-%d0%b8-%d1%81%d0%bd%d0%be%d0%b2%d0%b0-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>partial distinct</title>
		<link>http://pusher.kiev.ua/common/partial-distinct/</link>
		<comments>http://pusher.kiev.ua/common/partial-distinct/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 14:26:00 +0000</pubDate>
		<dc:creator>justpusher</dc:creator>
				<category><![CDATA[Общая]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[задачи]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">http://pusher.kiev.ua/uncategorized/partial-distinct/</guid>
		<description><![CDATA[предлагаю SQL-задачку. не надуманная, возникла на работе. контекст: музыкальный сайт, таблица (mysql) с плейлистами юзера playlists: { int id, //автоинкремент int song_id, //id самой песни int user_id, //id юзера, который добавил себе песню datetime added, //время, когда добавлена песня в его плейлист } song_id не уникальны, т.к. песню могли добавить несколько юзеров. задача: написать SQL [...]]]></description>
			<content:encoded><![CDATA[<p>предлагаю SQL-задачку. не надуманная, возникла на работе.</p>
<p>контекст: музыкальный сайт, таблица (mysql) с плейлистами юзера</p>
<p>playlists:<br />
{<br />
  int id, //автоинкремент<br />
  int song_id, //id самой песни<br />
  int user_id, //id юзера, который добавил себе песню<br />
  datetime added, //время, когда добавлена песня в его плейлист<br />
}</p>
<p>song_id не уникальны, т.к. песню могли добавить несколько юзеров.</p>
<p>задача: написать SQL для выборки: &#8220;последние песни, добавленные в плейлисты пользователей&#8221;. для песен нужно вывести кто и когда их добавил в последний раз. дубликаты песен выводить не нужно, если песню добавили два юзера &#8211; вывести последнее добавление. </p>
<p>иными словами, нужно выбрать &#8220;последние N неповторяющихся песен в плейлистах с указанием того, кто последний и когда её добавил&#8221;.</p>
<p>то, что пока придумал я, имеет 4 select&#8217;а в запросе и 3й уровень вложенности этих select&#8217;ов. сможешь лучше?</p>
<p>P.S. конечно же, должно работать максимально быстро. в наличии есть индекс по added.</p>
]]></content:encoded>
			<wfw:commentRss>http://pusher.kiev.ua/common/partial-distinct/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>осторожно, SQL_CALC_FOUND_ROWS</title>
		<link>http://pusher.kiev.ua/common/%d0%be%d1%81%d1%82%d0%be%d1%80%d0%be%d0%b6%d0%bd%d0%be-sql_calc_found_rows/</link>
		<comments>http://pusher.kiev.ua/common/%d0%be%d1%81%d1%82%d0%be%d1%80%d0%be%d0%b6%d0%bd%d0%be-sql_calc_found_rows/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 08:58:00 +0000</pubDate>
		<dc:creator>justpusher</dc:creator>
				<category><![CDATA[Общая]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[полезно]]></category>
		<category><![CDATA[работа]]></category>

		<guid isPermaLink="false">http://pusher.kiev.ua/uncategorized/%d0%be%d1%81%d1%82%d0%be%d1%80%d0%be%d0%b6%d0%bd%d0%be-sql_calc_found_rows/</guid>
		<description><![CDATA[Я всегда считал, что SQL_CALC_FOUND_ROWS &#8211; это круто. Для тех, кто ещё не знает, что это &#8211; позволяет два запроса типа &#8220;SELECT * FROM tbl WHERE somecondition LIMIT 100,10&#8243;, &#8220;SELECT COUNT(*) FROM tbl WHERE somecondition&#8221; выполнить в одном: &#8220;SELECT SQL_CALC_FOUND_ROWS * FROM tbl WHERE somecondition LIMIT 100,10&#8243; и затем вытащить количество найденных строк дополнительным запросом [...]]]></description>
			<content:encoded><![CDATA[<p>Я всегда считал, что SQL_CALC_FOUND_ROWS &#8211; это круто. </p>
<p>Для тех, кто ещё не знает, что это &#8211; позволяет два запроса типа<br />
&#8220;SELECT * FROM tbl WHERE somecondition LIMIT 100,10&#8243;,<br />
&#8220;SELECT COUNT(*) FROM tbl WHERE somecondition&#8221;</p>
<p>выполнить в одном:<br />
&#8220;SELECT SQL_CALC_FOUND_ROWS * FROM tbl WHERE somecondition LIMIT 100,10&#8243;<br />
и затем вытащить количество найденных строк дополнительным запросом<br />
&#8220;SELECT FOUND_ROWS()&#8221;.</p>
<p>Это очень удобно, и казалось, что очень эффективно (в моей голове не укладывалась мысль, что мускул может делать это хуже, чем втупую двумя запросами).</p>
<p>Оказывается, может.<br />
<a href="http://habrahabr.ru/blogs/mysql/64655/">Статья с Хабра</a>, букв много, рекомендую глянуть сразу <a href="http://lh6.ggpht.com/_XZLQT-behA4/Sl9AnCBOV2I/AAAAAAAABTo/GxJXjKBBIYM/diagramma.gif">диаграмму результатов</a>. Для тех кто не верит &#8211; <a href="http://www.mysqlperformanceblog.com/2007/08/28/to-sql_calc_found_rows-or-not-to-sql_calc_found_rows/">более авторитетный источник на английском.</a> </p>
<p>То есть, не так уж она хороша, эта удобная конструкция =(</p>
]]></content:encoded>
			<wfw:commentRss>http://pusher.kiev.ua/common/%d0%be%d1%81%d1%82%d0%be%d1%80%d0%be%d0%b6%d0%bd%d0%be-sql_calc_found_rows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>темы к phpmyadmin</title>
		<link>http://pusher.kiev.ua/common/%d1%82%d0%b5%d0%bc%d1%8b-%d0%ba-phpmyadmin/</link>
		<comments>http://pusher.kiev.ua/common/%d1%82%d0%b5%d0%bc%d1%8b-%d0%ba-phpmyadmin/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 15:49:00 +0000</pubDate>
		<dc:creator>justpusher</dc:creator>
				<category><![CDATA[Общая]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[работа]]></category>

		<guid isPermaLink="false">http://pusher.kiev.ua/uncategorized/%d1%82%d0%b5%d0%bc%d1%8b-%d0%ba-phpmyadmin/</guid>
		<description><![CDATA[сегодня попробовал возможность встроить в PMA больше тем. Немножко тем нашёл здесь: http://www.phpmyadmin.net/home_page/themes.php#pma_3_1 &#8211; мне хватило. Теперь страницы PMA стали на порядок красивее, в добавок выбрал разные темы для разных серверов &#8211; перестал путаться. Советую. P.S. в последней версии PMA настраивается цвет фона &#8211; тоже полезная фича.]]></description>
			<content:encoded><![CDATA[<p>сегодня попробовал возможность встроить в PMA больше тем. Немножко тем нашёл здесь: http://www.phpmyadmin.net/home_page/themes.php#pma_3_1  &#8211; мне хватило. Теперь страницы PMA стали на порядок красивее, в добавок выбрал разные темы для разных серверов &#8211; перестал путаться. Советую.<br />
P.S. в последней версии PMA настраивается цвет фона &#8211; тоже полезная фича.</p>
]]></content:encoded>
			<wfw:commentRss>http://pusher.kiev.ua/common/%d1%82%d0%b5%d0%bc%d1%8b-%d0%ba-phpmyadmin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

