Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Повышение производительности mysql обработки / 24 сообщений из 24, страница 1 из 1
09.10.2012, 12:35:39
    #37989843
ARST
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
Код: php
1.
2.
3.
4.
5.
6.
7.
$test_source = mysql_query("SELECT * FROM test");
while ($row = mysql_fetch_assoc($test_source))
{
	echo $row['name'];
	echo $row['link'];
	echo $row['text'];
}



Можно ли ускорить выполнение php-скрипта?
(Например вместо while использовать foreach или вместо mysql_fetch_assoc -> mysql_fetch_array)

Какая конструкция будет самой быстрой ? (только результат нужен в виде ассоциативного массива)
...
Рейтинг: 0 / 0
09.10.2012, 12:40:39
    #37989855
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
ARST
Код: php
1.
2.
3.
4.
5.
6.
7.
$test_source = mysql_query("SELECT * FROM test");
while ($row = mysql_fetch_assoc($test_source))
{
	echo $row['name'];
	echo $row['link'];
	echo $row['text'];
}



Можно ли ускорить выполнение php-скрипта?
(Например вместо while использовать foreach или вместо mysql_fetch_assoc -> mysql_fetch_array)

Какая конструкция будет самой быстрой ? (только результат нужен в виде ассоциативного массива)
Вы сами отвечаете на свои вопросы:
Код: php
1.
mysql_fetch_assoc -> mysql_fetch_array


отличаються ли тем что у .._array еще и цифровые возращаються. А это лишние операции, так что асок быстрее.
можете попробовать выполнить это на пдо или mysqli, но сомневаюсь что там что то существеное выграете.

Оптимизироовать надо решение самой задачи, а не инструменты которые у вас есть.
зы. не представляю как вы фореач собираетесь юзать.
...
Рейтинг: 0 / 0
09.10.2012, 12:42:47
    #37989864
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
PDO fetch all можно попробовать.
...
Рейтинг: 0 / 0
09.10.2012, 12:52:23
    #37989890
ARST
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
Ренат, спасибо за совет. Значит получается данный код нельзя уже оптимизировать.

А на счёт foreach, мне просто нравится функция у фрейма CodeIgniter - result_array()
Код: php
1.
2.
3.
4.
5.
6.
7.
$query = $this->db->query("YOUR QUERY");
foreach ($query->result_array() as $row)
{
   echo $row['title'];
   echo $row['name'];
   echo $row['body'];
}


Ну видимо эта функция на основе while создаёт массивы .


ScareCrow, скажи пожалуйста, "PDO fetch all" для MySQL прокатит, и будет ли выигрыш по производительности? Пользуешься ты им сам?
...
Рейтинг: 0 / 0
09.10.2012, 13:15:17
    #37989948
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
ARSTКакая конструкция будет самой быстрой ?
без разницы
...
Рейтинг: 0 / 0
09.10.2012, 13:25:32
    #37989961
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
а сколько это у тебя сейчас занимает по времени и сколько элементов ты туда выводишь?
...
Рейтинг: 0 / 0
09.10.2012, 13:43:26
    #37989985
ARST
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
ScareCrow, я копирую одну таблицу в другую, в таблице ~90 млн. записей, в сек. копируется 1 тыс. (веник SSD)
...
Рейтинг: 0 / 0
09.10.2012, 13:49:40
    #37989992
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
ARSTScareCrow, я копирую одну таблицу в другую, в таблице ~90 млн. записей, в сек. копируется 1 тыс. (веник SSD)
Вы задали вопрос, который никаким боком не соответствует Вашему "копирую одну таблицу в другую".
Вообще-то эту штуку надо делать одним элементарным запросом.
ПС. И никогда не пишите селект-звёздочка.
...
Рейтинг: 0 / 0
09.10.2012, 13:59:07
    #37990014
ARST
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
ShSerge, там не просто копирование, там привидение таблицы к нормальной форме, разложение всего по сущностям... по другим таблицам... вообщем вопрос стоял в ускорении такого кода...
...
Рейтинг: 0 / 0
09.10.2012, 14:10:36
    #37990039
SmeL_md
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
ARST, напишите хранимку если хотите скорость. 90kk записей это десятки гигов данных
...
Рейтинг: 0 / 0
09.10.2012, 14:32:59
    #37990109
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
ARST,

Ну и пишите это дело на SQL. Пхп-то здесь причём? Вы ещё яваскрипт сюда прикрутите.
...
Рейтинг: 0 / 0
09.10.2012, 14:34:47
    #37990118
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
ARSTShSerge, там не просто копирование, там привидение таблицы к нормальной форме, разложение всего по сущностям... по другим таблицам... вообщем вопрос стоял в ускорении такого кода...
Неужто нельзя сделать что то наподобии?
Код: php
1.
2.
INSERT INTO table2
SELECT id, column2-column1,.... FROM table1


Вы можете одним запросом вставить что хотите в другую таблицу. Так не таскайте все данные туда сюда: mysql->php->mysql а все делайте на сервере баз данных.
Если уж логика супер сложная то как вам сказали хранимки вам в помошь.
...
Рейтинг: 0 / 0
10.10.2012, 11:46:04
    #37991342
ARST
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
Там по-любому если только хранимые процедуры, но я в них не очень силён. (К тому же в некоторых запросах мне требуется регулярные выражения, хотя это тоже вроде есть)
...
Рейтинг: 0 / 0
10.10.2012, 11:47:54
    #37991348
ARST
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
И ещё самое главное наверно, что не сделать в самой базе, у меня идут запросы к API сайту.
...
Рейтинг: 0 / 0
10.10.2012, 13:26:48
    #37991593
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
ARSTИ ещё самое главное наверно, что не сделать в самой базе, у меня идут запросы к API сайту.
вот это и занимае основное время))
а никак не foreach или while.
...
Рейтинг: 0 / 0
10.10.2012, 14:22:37
    #37991731
artas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
ARST,

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
$test_source = mysql_query("SELECT * FROM test");
ob_start();
while ($row = mysql_fetch_assoc($test_source))
{
	echo $row['name'];
	echo $row['link'];
	echo $row['text'];
}
ob_end_flush();


попробуйте так
...
Рейтинг: 0 / 0
10.10.2012, 15:11:49
    #37991847
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
r uARSTИ ещё самое главное наверно, что не сделать в самой базе, у меня идут запросы к API сайту.
вот это и занимае основное время))
а никак не foreach или while.
т.е. вы через айпи таскаете всю таблицу и потом в другом месте все это ставляете?
...
Рейтинг: 0 / 0
10.10.2012, 19:25:06
    #37992442
Bednii_Student
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
Что за
Ренат правильно написал
Код: sql
1.
2.
INSERT INTO table2
SELECT id, column2-column1,.... FROM table1
...
Рейтинг: 0 / 0
10.10.2012, 19:26:40
    #37992444
Bednii_Student
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
И что вола тянете?
Хотите скорости пишите хранимку, а нет так ставьте копипаст на ночь и идите спать.
...
Рейтинг: 0 / 0
11.10.2012, 01:16:29
    #37992831
ARST
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
Тема закрыта. Хранимая процедуры в моём случаи не годится (идёт обращение к api сайта). Так что получается код быстрей не реализовать чем был. Только интересно было предложение от "artas":
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
ob_start();
while ($row = mysql_fetch_assoc($test_source))
{
	echo $row['name'];
	echo $row['link'];
	echo $row['text'];
}
ob_end_flush();



это будет быстрей работать?
...
Рейтинг: 0 / 0
11.10.2012, 02:37:47
    #37992859
Bednii_Student
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
ARSTТема закрыта. Хранимая процедуры в моём случаи не годится (идёт обращение к api сайта). Так что получается код быстрей не реализовать чем был. Только интересно было предложение от "artas":
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
ob_start();
while ($row = mysql_fetch_assoc($test_source))
{
	echo $row['name'];
	echo $row['link'];
	echo $row['text'];
}
ob_end_flush();



это будет быстрей работать?
Замерьте на миллионе, напишите нам время
...
Рейтинг: 0 / 0
11.10.2012, 09:20:32
    #37993009
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
ARSTИ ещё самое главное наверно, что не сделать в самой базе, у меня идут запросы к API сайту.
Если вам безопасность не так важна (к примеру внутри сетки сайт), то можете брать через php файлы с базы данных, что находяться в папке mysql-x.x/data/<database name>/ отпарвлять их приложению-клиенту, а уже клиент приложение подставит их куда надо, и через хранимки все выполнит.
...
Рейтинг: 0 / 0
11.10.2012, 11:03:21
    #37993201
artas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
ARST,

будет, но это оптимизация РНР. Весь вывод в браузер кешируется, на больших проэктах(где много вызывалось эхо) заметно повышало быстродействие
...
Рейтинг: 0 / 0
11.10.2012, 12:41:15
    #37993490
Bednii_Student
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повышение производительности mysql обработки
РенатARSTИ ещё самое главное наверно, что не сделать в самой базе, у меня идут запросы к API сайту.
Если вам безопасность не так важна (к примеру внутри сетки сайт), то можете брать через php файлы с базы данных, что находяться в папке mysql-x.x/data/<database name>/ отпарвлять их приложению-клиенту, а уже клиент приложение подставит их куда надо, и через хранимки все выполнит.

Прикол, не знал.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Повышение производительности mysql обработки / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]