sqlsrv_fetch_array - слишком медленная обработка запроса
Какое есть решение ?
Сам запрос выглядит примерно так:
------------------------------------------------------------
[COLOR="SeaGreen"]$q = "SELECT * FROM table_name";
$sq = sqlsrv_query($conn, $q);
while ($sfa_address_book = sqlsrv_fetch_array($sq)){
}[/COLOR]
------------------------------------------------------------
Запрос занял 4-е минуты, очень долго:eek:
Попробуй вытаскивать по несколько тысяч за раз (LIMIT x, 2048 например).
Цитата: Proger_XP
Попробуй вытаскивать по несколько тысяч за раз (LIMIT x, 2048 например).
В MS Sql нет LIMIT ((
Там он вообще работает что-то в духе того:
SELECT TOP 15 * FROM table WHERE id NOT IN (SELECT TOP 15 * FROM table)
От чего запрос становится больше.
Даже если я беру данные по нескольку проходов по 100 000 строк, то у меня все равно получается суммарное время 4-е минуты =(
Я попробовал на своей таблице выбрать 300к строк через тот цикл, что у тебя, но из MySQL - скрипт секунд за 10 справился. Может в пхпшной реализации sqlsrv_* есть какое-то тонкое место, где тормозит.
Цитата: Bear Deon
В MS Sql нет LIMIT ((
Реализация постраничной выборки в MS SQL Server... может пригодится
http://www.arbinada.com/main/node/463
База данных MyISAM?
sql1 = "SELECT id, men, adres FROM firma ORDER BY id ";
result1 = mysql_querysql1 or diemysql_error ."<br/>". sql1;
и
sql2 = "SELECT id, men, famil FROM menedger where ? " ;
result2 = mysql_querysql2 or diemysql_error ."<br/>". sql2;
Подскажите, что подставить во второй запрос в where, чтобы выбрать только поле men из первой таблицы?
Цитата: glonnawancy
Есть 2 запроса к базе:
sql1 = "SELECT id, men, adres FROM firma ORDER BY id ";
result1 = mysql_querysql1 or diemysql_error ."<br/>". sql1;
и
sql2 = "SELECT id, men, famil FROM menedger where ? " ;
result2 = mysql_querysql2 or diemysql_error ."<br/>". sql2;
Подскажите, что подставить во второй запрос в where, чтобы выбрать только поле men из первой таблицы?
sql1 = "SELECT id, men, adres FROM firma ORDER BY id ";
result1 = mysql_querysql1 or diemysql_error ."<br/>". sql1;
и
sql2 = "SELECT id, men, famil FROM menedger where ? " ;
result2 = mysql_querysql2 or diemysql_error ."<br/>". sql2;
Подскажите, что подставить во второй запрос в where, чтобы выбрать только поле men из первой таблицы?
непонятно чего хотите!!!
1. какие есть таблицы (какие в них поля)?
2. что хотите получить в результате запроса?
Цитата: glonnawancy
Подскажите, что подставить во второй запрос в where, чтобы выбрать только поле men из первой таблицы?
Можно и одним:
Код:
"SELECT menedger.id, menedger.men, menedger.famil, firma.id, firma.men, firma.adres FROM menedger, firma where menedger.men = firma.men";