<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум PHP-MyAdmin.RU &mdash; вопрос по оптимизации нескольких запросов]]></title>
	<link rel="self" href="https://forum.php-myadmin.ru/extern.php?action=feed&amp;tid=2497&amp;type=atom" />
	<updated>2012-03-02T18:34:54Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.php-myadmin.ru/viewtopic.php?id=2497</id>
		<entry>
			<title type="html"><![CDATA[Re: вопрос по оптимизации нескольких запросов]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=19088#p19088" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Hanut сказал:</cite><blockquote><p>в некоторых пределах.</p></blockquote></div><p>и за это тоже :)</p>]]></content>
			<author>
				<name><![CDATA[элекроник]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=2877</uri>
			</author>
			<updated>2012-03-02T18:34:54Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=19088#p19088</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: вопрос по оптимизации нескольких запросов]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=19087#p19087" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>элекроник сказал:</cite><blockquote><p>но она же там постоянно разная</p></blockquote></div><p>Она и при реальном выполнении любого запроса будет разной; в некоторых пределах.</p>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2012-03-02T17:27:27Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=19087#p19087</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: вопрос по оптимизации нескольких запросов]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=19086#p19086" />
			<content type="html"><![CDATA[<p>(запрос занял 0.0005 сек) если вы про эту скорость, но она же там постоянно разная :) даже если проверять один и тот же вопрос. но вообщем не хочется быть навязчивым, поэтому спасибо за ответы!<br />главное что двумя запросами, как у меня - правильно :) за этим я и создавал тему</p>]]></content>
			<author>
				<name><![CDATA[элекроник]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=2877</uri>
			</author>
			<updated>2012-03-02T16:58:18Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=19086#p19086</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: вопрос по оптимизации нескольких запросов]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=19085#p19085" />
			<content type="html"><![CDATA[<p>Скорость выполнения запроса видна в phpMyAdmin, в самом верху результатов.</p><p>Данные полученные от EXPLAIN используются для анализа выполнения запроса и определения полей индексации.</p><div class="quotebox"><cite>элекроник сказал:</cite><blockquote><p>а в каких случаях, лучше запросы объединять?</p></blockquote></div><p>Объединять запросы надо только в том случае, если без этого нельзя обойтись, например при необходимости сортировки данных выбираемых из двух таблиц.</p>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2012-03-02T15:39:15Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=19085#p19085</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: вопрос по оптимизации нескольких запросов]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=19083#p19083" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Hanut сказал:</cite><blockquote><p>посмотреть анализ выполнения запроса MySQL</p></blockquote></div><p>этот?<br />id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra<br />если этот, то не понятно где указанна скорость выполнения запроса<br />(или если скорость неуказанна, то каким образом её можно определить)<br /></p><div class="quotebox"><cite>Hanut сказал:</cite><blockquote><p>Думаю два отдельных запроса будет лучше, чем объединенные в один подзапрос.</p></blockquote></div><p>значит в моём случаи, ничего лучше двух отдельных запросов, придумать нельзя? правильно понимаю?<br />а в каких случаях, лучше запросы объединять? (скажите хотя бы вкратце, если это возможно)</p>]]></content>
			<author>
				<name><![CDATA[элекроник]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=2877</uri>
			</author>
			<updated>2012-03-02T14:19:32Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=19083#p19083</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: вопрос по оптимизации нескольких запросов]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=19082#p19082" />
			<content type="html"><![CDATA[<p>Если в phpMyAdmin перед запросом SELECT поставить EXPLAIN, то можно посмотреть анализ выполнения запроса MySQL. Думаю два отдельных запроса будет лучше, чем объединенные в один подзапрос.</p>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2012-03-02T13:37:21Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=19082#p19082</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: вопрос по оптимизации нескольких запросов]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=19081#p19081" />
			<content type="html"><![CDATA[<p>имеете введу что от &quot;какого-то такого&quot; варианта (то есть объединённого похожим образом)<br /></p><div class="quotebox"><blockquote><p>$res = mysql_query(&quot;select `id` as `id_prev`, (select `id` from `tabletest` where `id` &gt; $id order by `id` limit 1) as `id_next` from `tabletest` where `id` &lt; $id order by `id` desc limit 1&quot;,$db);</p></blockquote></div><p>страница будет загружаться &quot;дольше&quot;/&quot;одинаково&quot; чем если оставить два отдельных запроса, как сейчас/как в примере?</p>]]></content>
			<author>
				<name><![CDATA[элекроник]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=2877</uri>
			</author>
			<updated>2012-03-02T13:12:06Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=19081#p19081</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: вопрос по оптимизации нескольких запросов]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=19080#p19080" />
			<content type="html"><![CDATA[<p>В таком случае я не вижу возможности что-то изменить и улучшить.</p>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2012-03-02T12:55:45Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=19080#p19080</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: вопрос по оптимизации нескольких запросов]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=19079#p19079" />
			<content type="html"><![CDATA[<p>Hanut, большое спасибо за ответ!</p><div class="quotebox"><blockquote><p><span style="color: #cccccc">Hanut</span><br />Насколько я вижу, объединить можно 2-ой и 3-ий запрос, конечно, если это годится для получения данных.</p></blockquote></div><p>мне это уже советовали, но я не знаю как правильно это сделать:<br />1. чтобы запрос был правильный и не тормозил &quot;больше&quot; чем, если бы эти 2 запроса так и остались отдельно<br />2. не понимаю как мне потом &quot;вывести&quot; через php, этот результат, не используя цикл<br />(чтоб полученные данные были например в таком виде $id_prev и $id_next)</p><div class="quotebox"><blockquote><p><span style="color: #cccccc">Hanut</span><br />$res = mysql_query(&quot;SELECT `id`,`username` FROM `tabletest` WHERE `id`!= &#039;$id&#039; AND `username`=&#039;aaa&#039; LIMIT 1&quot;,$db);</p></blockquote></div><p>это не совсем то, что мне надо, а надо вот что:</p><p>есть &quot;страница 1&quot; (там выводятся все превью/картинки где, например, `username`=&#039;aaa&#039;)<br />(нажимая на любую картину, переходим по &quot;ссылке?id=...&quot; на &quot;страницу 2&quot;)</p><p>есть &quot;страница 2&quot;, куда мы перешли, и взяли с собой значение переменной $id, и также мы знаем (не важно откуда) что нужно выбирать `username`=&#039;aaa&#039;.<br />например: $id=15 (&quot;ссылке?id=15&quot;)<br />нужно выбрать `id`&lt;$id LIMIT 1 (то есть выберем `id`=14) и `id`&gt;$id LIMIT 1 (то есть 16)<br />(и это если в базе не удалено поле с `id`=14 или `id`=16, если удаленно поле, например, где `id`=14, то будет так:<br />`id`&lt;$id LIMIT 1 (то есть 13, так как 14-нету) и `id`&gt;$id LIMIT 1 (то есть 16))<br />(как писал в первом сообщении, эти 2 `id` выбираются ещё и по `username`=&#039;aaa&#039;)</p><p>одним словом это будет &quot;навигация&quot;, с кнопками [предыдущая] [следующая]<br />(где на примере с $id=15 [предыдущая=16] а [следующая=14], а то что посередине, то есть 15 уже можно будет выводить только по `id` не трогая `username`=&#039;aaa&#039;)</p><p>я сделал специально пример, этими двумя запросами, посмотрите [ <a href="http://forum.php-myadmin.ru/viewtopic.php?id=2497">ссылка</a> ] пожалуйста</p><p>2. $res = mysql_query(&quot;SELECT `id`,`username` FROM `tabletest` WHERE `id`&lt;&#039;$id&#039; AND `username`=&#039;aaa&#039; ORDER BY `id` DESC LIMIT 1&quot;,$db);<br />3. $res = mysql_query(&quot;SELECT `id`,`username` FROM `tabletest` WHERE `id`&gt;&#039;$id&#039; AND `username`=&#039;aaa&#039; ORDER BY `id` LIMIT 1&quot;,$db);</p><div class="quotebox"><blockquote><p><span style="color: #cccccc">Hanut</span><br />Количество запросов на странице большого значения не имеет. ...</p></blockquote></div><p>за это тоже спасибо, а то точек зрения много, а в мануалах не всегда понятно &quot;для моего уровня знаний&quot; написано</p><p>пс: все данные, на &quot;страница 1&quot;, выводятся в обратном порядке (ORDER BY `id` DESC) соответственно нужно будет это учесть на странице &quot;страница 2&quot;<br />псс: извините за возможно запутанное объяснение, уже не один день решаю как сделать/сделать правильно/сделать лучше<br />пссс: ссылку на фрихост с примером, уберу, как только вы ответите/значит посмотрели</p>]]></content>
			<author>
				<name><![CDATA[элекроник]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=2877</uri>
			</author>
			<updated>2012-03-02T12:33:07Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=19079#p19079</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: вопрос по оптимизации нескольких запросов]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=19075#p19075" />
			<content type="html"><![CDATA[<p>Насколько я вижу, объединить можно 2-ой и 3-ий запрос, конечно, если это годится для получения данных. В данном случае запрос находит записи имеющие различные идентификаторы, но одинаковое имя в поле `username`.<br />$res = mysql_query(&quot;SELECT `id`,`username` FROM `tabletest` WHERE `id`!= &#039;$id&#039; AND `username`=&#039;aaa&#039; LIMIT 1&quot;,$db);</p><p>Количество запросов на странице большого значения не имеет. Замедление вызывает выборка из таблицы с большим количеством данных при отсутствии индексов. В вашем случае, есть первичный ключ (уникальный индекс) id и поле username по которым осуществляется выборка, значит надо обратить внимание на то, чтобы поле username было индексом (не уникальным).</p>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2012-03-02T10:04:50Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=19075#p19075</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[вопрос по оптимизации нескольких запросов]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=19074#p19074" />
			<content type="html"><![CDATA[<p>здравствуйте<br />с вашего позволения сначала, напишу что нужно, потом как я это делаю, ну и потом вопросы :)</p><p>нужно:<br />1. выбрать все записи, из таблицы `tabletest` где `id`=&#039;$id&#039;<br />2. выбрать `id` из таблицы `tabletest` где `id`&lt;&#039;$id&#039; и `username`=&#039;aaa&#039; LIMIT 1<br />3. выбрать `id` из таблицы `tabletest` где `id`&gt;&#039;$id&#039; и `username`=&#039;aaa&#039; LIMIT 1<br />4. подсчитать сколько всего строк в таблице `tabletest` где `username`=&#039;aaa&#039;</p><p>5. сделать запрос к другой таблице `tabletest_a`, и выбрать что-то одно, где что-то равно что-то (этот запрос я оставлю как есть, просто перечисляю и его тоже, чтобы у вас была общая картина страницы)<br />6. сделать запрос к другой таблице `tabletest_b`, сколько и что там выбирать, я ещё не в курсе, но уверен что этот запрос будет (тоже для общей картины)</p><p>делаю так: (всё работает как нужно)<br />1. $res = mysql_query(&quot;SELECT * FROM `tabletest` WHERE `id`=&#039;$id&#039;&quot;,$db);<br />2. $res = mysql_query(&quot;SELECT `id`,`username` FROM `tabletest` WHERE `id`&lt;&#039;$id&#039; AND `username`=&#039;aaa&#039; ORDER BY `id` DESC LIMIT 1&quot;,$db);<br />3. $res = mysql_query(&quot;SELECT `id`,`username` FROM `tabletest` WHERE `id`&gt;&#039;$id&#039; AND `username`=&#039;aaa&#039; ORDER BY `id` LIMIT 1&quot;,$db);<br />4. $res = mysql_query(&quot;SELECT COUNT(*) FROM `tabletest` WHERE `username`=&#039;aaa&#039;&quot;,$db);</p><p>5. -<br />6. -</p><p>как мне всё это оптимизировать?<br />то есть какие запросы лучше объединить, а какие оставить отдельными?<br />(интересуют запросы 1,2,3,4, а остальные 5,6 только для наглядности, чтобы вы знали сколько их всего на странице)</p>]]></content>
			<author>
				<name><![CDATA[элекроник]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=2877</uri>
			</author>
			<updated>2012-03-01T22:11:30Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=19074#p19074</id>
		</entry>
</feed>
