<?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>Лобач.info &#187; webdev</title>
	<atom:link href="http://lobach.info/category/develop/webdev/feed/" rel="self" type="application/rss+xml" />
	<link>http://lobach.info</link>
	<description>Заметки LAMP-программиста о вебдеве и не только...</description>
	<lastBuildDate>Fri, 23 Dec 2011 10:23:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Псевдо-count (*)</title>
		<link>http://lobach.info/develop/webdev/count-tips/</link>
		<comments>http://lobach.info/develop/webdev/count-tips/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 06:00:20 +0000</pubDate>
		<dc:creator>Олег Лобач</dc:creator>
				<category><![CDATA[webdev]]></category>
		<category><![CDATA[innodb]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://lobach.info/?p=174</guid>
		<description><![CDATA[В этой же короткой заметке я хочу рассказать о небольшой уловке, которая позволит быстро получить приблизительное значение количества строк в таблице. <a href="http://lobach.info/develop/webdev/count-tips/">Продолжить чтение <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>На написание этого поста меня подтолкнула запись в блоге <a href="http://www.wddx.ru/">Кирилла Мокевнина</a> под названием &laquo;<a href="http://www.wddx.ru/2010/07/count-vs.html">Count (*) vs Triggers</a>&raquo; (кстати, рекомендую подписаться на обновления этого блога&nbsp;&mdash; весьма полезные статьи публикуются). В комментариях к статье я немного подискутировал с автором на тему применимости этой методики и способах ускорения подсчета числа записей в таблице. Кому интересно это обсуждение&nbsp;&mdash; прошу <a href="http://www.wddx.ru/2010/07/count-vs.html#comments">в каменты</a>.</p>
<p>В этой же короткой заметке я хочу рассказать о небольшой уловке, которая позволит быстро узнать приблизительное количество строк в таблице.</p>
<p>Так как в таблицах InnoDB счетчик строк не хранится в метаданных таблицы (в отличии от MyISAM), то для получения количества строк, содержащихся в табице нам надо все эти строки перебрать. Но если нам не важна абсолютная точность, то можно немного схитрить и поступить иначе: можно подсмотреть следующее значение автоинкрементного поля.</p>
<p>Если выполнить команду</p>
<pre><code>SHOW CREATE TABLE `article`;</code></pre>
<p>То получим что-то вроде этого:</p>
<pre><code>CREATE TABLE  `article` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `title` varchar(100) NOT NULL,
  `content` text NOT NULL,
  `author_id` int(10) unsigned NOT NULL,
  `dt` timestamp NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB
  AUTO_INCREMENT=2541256
  DEFAULT CHARSET=utf8;</code></pre>
<p>Свойство <em>AUTO_INCREMENT</em> содержит то, что нам надо.</p>
<p>А вот пример кода:</p>
<pre><code>$result = $db-&gt;query('show create table article');
$row = $result-&gt;fetch_array();
if (!preg_match('/AUTO_INCREMENT=(\d+)/i',$row["Create Table"],$matches)) {
    throw new Exception('AUTO_INCREMENT value for table "article" not found');
}
$counter = (int)$matches[1] - 1;</code></pre>
<p>Небольшие пояснения.</p>
<ul>
<li><em>$db</em>&nbsp;&mdash; экземпляр класса <em>Zend_Db</em>. Наверняка вам не составит труда изменить код под использование вашего любимого DAO или нативные php-функции.</li>
<li>из ответа СУБД регулярным выражением извлекаем следующее значение автоинкрементного поля</li>
<li>из полученного числа нужно отнять 1, т.к. оно указывает на будущее значение, а нам нужно знать текущее.</li>
</ul>
<p>У этого способа есть несколько недостатков и одно огромное преимущество. Преимущество заключается в скорости&nbsp;&mdash; этот метод ОЧЕНЬ быстрый и не зависит от размеров таблицы. Недостатком же является его применимость только в весьма ограниченных ситуациях:</p>
<ul>
<li>узнать можно только общее количество записей, без возможности наложения каких-либо условий</li>
<li>чем больше из таблицы удалений, тем меньше точность результата</li>
</ul>
<p>Поэтому основное применение методу найдется на однородных таблицах с редким удалением и для вывода различной статистики: количество зарегистрированных пользователей, всего постов на форуме, всего товаров в магазине и т.п.</p>
<p><strong>А знаете ли Вы какие-нибудь хитрые способы работы с БД? Поделитесь ими в комментариях.</strong></p>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Псевдо-count (*) on Лобач.info',url: 'http://lobach.info/develop/webdev/count-tips/',contentID: 'post-174',suggestTags: 'innodb,mysql,tips',providerName: 'Лобач.info',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper-rus.png" class="evernoteSiteMemoryButton" /><br />
				</a>
<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div>

	Метки: <a href="http://lobach.info/tag/innodb/" title="innodb" rel="tag">innodb</a>, <a href="http://lobach.info/tag/mysql/" title="mysql" rel="tag">mysql</a>, <a href="http://lobach.info/tag/tips/" title="tips" rel="tag">tips</a><br />

	<h4>Похожие записи</h4>
	<ul class="st-related-posts">
	<li>Нет похожих записей</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://lobach.info/develop/webdev/count-tips/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Поведение IE6 при различных кодировках HTML и CSS</title>
		<link>http://lobach.info/develop/webdev/difrent-charset-and-ie6/</link>
		<comments>http://lobach.info/develop/webdev/difrent-charset-and-ie6/#comments</comments>
		<pubDate>Mon, 24 Dec 2007 14:30:52 +0000</pubDate>
		<dc:creator>Олег Лобач</dc:creator>
				<category><![CDATA[webdev]]></category>
		<category><![CDATA[charsets]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[верстка]]></category>

		<guid isPermaLink="false">http://lobach.info/some/%d0%bf%d0%be%d0%b2%d0%b5%d0%b4%d0%b5%d0%bd%d0%b8%d0%b5-ie6-%d0%bf%d1%80%d0%b8-%d1%80%d0%b0%d0%b7%d0%bb%d0%b8%d1%87%d0%bd%d1%8b%d1%85-%d0%ba%d0%be%d0%b4%d0%b8%d1%80%d0%be%d0%b2%d0%ba%d0%b0%d1%85-html/</guid>
		<description><![CDATA[Небольшая предистория Некоторое время назад я получил от верстальщика сверстанный макет одного сайта. Этот макет нужно было разбить на части и сделать из него шаблон. Ничего сложного, рутина. Все сделал довольно быстро, начал проверять как шаблон работает на сайте. Проверка &#8230; <a href="http://lobach.info/develop/webdev/difrent-charset-and-ie6/">Продолжить чтение <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Небольшая предистория</p>
<p>Некоторое время назад я получил от верстальщика сверстанный макет одного сайта. Этот макет нужно было разбить на части и сделать из него шаблон. Ничего сложного, рутина. Все сделал довольно быстро, начал проверять как шаблон работает на сайте.</p>
<p>Проверка показала, что в IE6 полностью ломается верстка. При этом ни IE7, ни Опера, ни Фокс подобными &laquo;фокусами&raquo; не страдали. И, что самое интересное, макет от верстальщика IE6 показывал именно так, как надо. Ну, думаю, где-то чего-то забыл закрыть или наоборот добавил лишку. Начал проверять: каждый тэг посмотрел, все проверил&nbsp;&mdash; все правильно! Да и Фокс говорит&nbsp;&mdash; валидный документ, и валидатор W3C отрапортовал об отсутствии ошибок!</p>
<p>Тут я схватился за голову: мысли кончились, все вроде проверил, что делать дальше&nbsp;&mdash; незнаю.  Вообщем, через несколько часов разнообразных телодвижений с ударным музыкальным инструментом (ака танцев с бубном), я случайно обратил внимание на кодировку файла стилей&nbsp;&mdash; win1251. А в шаблоне используется UTF-8! А дело оказалось в комментариях на русском языке, которые верстальщик сделал в css-файле.</p>
<p>В итоге, перевод css-файла в utf-8 вразумил &laquo;ослика&raquo; и вернул мне душевное спокойствие.</p>
<p>А мораль проста: или пользуйтесь одной кодировкой в html- и  css-файлах, или комментируйте код по-английски (а лучше используйте оба этих варианта).</p>
<p>Надеюсь эта моя &laquo;грабля&raquo; убережет кому-нибудь  время и нервы...</p>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Поведение IE6 при различных кодировках HTML и CSS on Лобач.info',url: 'http://lobach.info/develop/webdev/difrent-charset-and-ie6/',contentID: 'post-13',suggestTags: 'charsets,css,html,ie6,верстка',providerName: 'Лобач.info',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper-rus.png" class="evernoteSiteMemoryButton" /><br />
				</a>
<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div>

	Метки: <a href="http://lobach.info/tag/charsets/" title="charsets" rel="tag">charsets</a>, <a href="http://lobach.info/tag/css/" title="css" rel="tag">css</a>, <a href="http://lobach.info/tag/html/" title="html" rel="tag">html</a>, <a href="http://lobach.info/tag/ie6/" title="ie6" rel="tag">ie6</a>, <a href="http://lobach.info/tag/%d0%b2%d0%b5%d1%80%d1%81%d1%82%d0%ba%d0%b0/" title="верстка" rel="tag">верстка</a><br />

	<h4>Похожие записи</h4>
	<ul class="st-related-posts">
	<li><a href="http://lobach.info/some/rit2008-first-day/" title="Впечатления от первого дня РИТ-2008 (14.04.2008)">Впечатления от первого дня РИТ-2008</a> (3)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://lobach.info/develop/webdev/difrent-charset-and-ie6/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

