Я имею дело с базой данных, содержащей около 30 таблиц и 10 миллионов уникальных записей.PHP-запрос выполняется медленно и сокращает значения в очень большой базе данных MySQL
Я пытаюсь использовать PHP для представления этих данных в определенном формате с помощью функции эха и размещения переменных с помощью {$ variable}.
Кроме того, данные являются иерархическими, поэтому я использовал команду соединения, чтобы включить несколько столбцов, а итоговая таблица, вероятно, составляла около 15 столбцов.
Я запустил файл php в Google Chrome, и он работал около 1 часа на довольно приличной машине core2duo.
Но результирующий набор остановился примерно на 18 тыс. Записей - кстати, я не поставил никаких ограничений на запрос.
Самая важная часть моего вопроса - как запустить этот файл, чтобы получить все результаты? Я не хочу сидеть там и устанавливать смещение снова и снова, если есть другой способ, я был бы очень благодарен.
Вторично - и я знаю, что вам, вероятно, нужна дополнительная информация, просто не уверен, что - могу ли я сделать процесс быстрее? Я планирую перезапустить его на более качественной машине, но есть ли другие способы?
Благодаря
Обновление:
<?php
include ('includes/functions.php');
$connection=connectdb();
$result=runquery('
SELECT taxonomic_rank.rank as shortrank, scientific_name_element.name_element as shortname, sne.name_element as pname, tr.rank as prank
FROM taxon_name_element
LEFT JOIN scientific_name_element ON taxon_name_element.scientific_name_element_id = scientific_name_element.id
LEFT JOIN taxon ON taxon_name_element.taxon_id = taxon.id
LEFT JOIN taxonomic_rank ON taxonomic_rank.id = taxon.taxonomic_rank_id
LEFT JOIN taxon_name_element AS tne ON taxon_name_element.parent_id = tne.taxon_id
LEFT JOIN scientific_name_element AS sne ON sne.id = tne.scientific_name_element_id
LEFT JOIN taxon AS tax ON tax.id = tne.taxon_id
LEFT JOIN taxonomic_rank AS tr ON tr.id = tax.taxonomic_rank_id');
set_time_limit(0);
ini_set('max_execution_time',0);
while($taxon_name_element = mysql_fetch_array($result)){
if ($taxon_name_element['shortrank'] == 'species'){
$subitem = $taxon_name_element['pname']."_".$taxon_name_element['shortname'];}
else{$subitem = $taxon_name_element['shortrank']."_".$taxon_name_element['shortname'];}
$parentitem = $taxon_name_element['prank']."_".$taxon_name_element['pname'];
echo
"\n<!-- http://invertnet.ill/med#{$subitem}\" -->\n
<owl:Class rdf:about=\"http://invertnet.ill/med#{$subitem}\">
<rdfs:label xml:lang=\"en\">{$subitem}</rdfs:label>
<rdfs:subClassOf rdf:resource=\"http://invertnet.ill/med#{$parentitem}\"/>
</owl:Class>\n\n";}
echo "<br>".count($taxon_name_element)." number of stuff";
?>
Добавьте некоторые индексы на столбцы, к которым вы присоединяетесь, и пропустите PHP. Просто используйте терминал и выведите результаты в файл. – thetaiko
Какой ответ вы ожидаете получить? Нет никаких подробностей. Поэтому единственное, что мы можем сделать, это просто молиться за вас. – zerkms
thetaiko: спасибо, я сделаю это; zerkms: ваши молитвы приветствуются! знак равно Я не был уверен, какие детали релевантны: sql-запрос, php-код или я должен просто предоставить все? спасибо – SimaPro