2013-09-25 2 views
0

Следующий запрос принимают 10.86secs инициировать,PHP Загрузка раз

$sql="SELECT items.id i_id, status,manufacturerid,model,label,cpuno,corespercpu 
     from items,item2soft 
     where item2soft.itemid=items.id AND item2soft.softid={$r['id']} 
     order by label asc "; 

В то время как этот код занимает 23.73secs

$sql="SELECT items.id i_id, status,manufacturerid,model,label,cpuno,corespercpu 
     from items,item2soft 
     where item2soft.itemid=items.id AND item2soft.softid={$r['id']}"; 

Единственное различие между двумя кодами является последний имеет ORDER BY ключевое слово. Есть ли способ сделать это быстрее. Пожалуйста, не стесняйтесь спрашивать меня что-нибудь. Спасибо за вашу помощь :)

+2

сделать EXPLAIN для запроса к базе данных, посмотрите, что (если таковые имеются) используются индексы –

+0

** Создавая SQL-выражения с внешними переменными, вы оставляете себя широко открытыми для SQL-инъекций. ** Кроме того, любые входные данные с одинарными кавычками в нем, такие как имя «O'Malley», взорвут ваш SQL запрос. Пожалуйста, узнайте об использовании параметризованных запросов, желательно с модулем PDO, для защиты вашего веб-приложения. У http://bobby-tables.com/php есть примеры, чтобы вы начали, и [этот вопрос] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in- php) имеет много примеров. –

ответ

2

Посмотрев на ваш запрос - и я имею в виду: добавив правильный отступ, чтобы я мог его прочитать - вам, вероятно, просто нужно добавить некоторые индексы.

$sql = "SELECT 
    items.id i_id, 
    status, 
    manufacturerid, 
    model, 
    label, 
    cpuno, 
    corespercpu 
FROM 
    items, 
    item2soft 
WHERE 
    item2soft.itemid = items.id 
    AND item2soft.softid = {$r['id']} 
ORDER BY label ASC" 

Добавить индексы item2soft.itemid и item2soft.softid

Если он по-прежнему медленно, запустить EXPLAIN

+0

Благодаря Frits, я новичок в этой сделке PHP SQLite. Можете ли вы рассказать мне, как добавить индекс в существующие таблицы. – Carter

+0

Если замедление происходит при добавлении предложения ORDER BY, я предполагаю, что любая таблица содержит этот столбец, который требует составной индекс ... –

+0

@Carter use Adminer или PHPMyAdmin, чтобы получить хороший обзор в вашей базе данных. У них есть хороший графический интерфейс для добавления индексов. – Halcyon

Смежные вопросы