|
|
|
| Есть таблица
CREATE TABLE `music_21-11-07-pm1121-19-04-35` (
`id` int(10) NOT NULL auto_increment,
`abc` char(2) NOT NULL default '',
`kompoz` varchar(100) NOT NULL default '',
`data` varchar(30) NOT NULL default '',
`link` varchar(255) NOT NULL default '',
`down` int(10) NOT NULL default '0',
`active` int(2) NOT NULL default '0',
`autor` varchar(100) NOT NULL default '',
`login` varchar(100) NOT NULL default 'Admin',
`moder` int(2) NOT NULL default '1',
`xtest` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
KEY `id_2` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=58120 ;
|
В ней 58120 записей, размер таблицы 159.1 МБ.
Вот, поставил сайт сюда : http://akkord.fivemusic.ru/index.php?modul=181
И страницы ЖУТКО ВИСНУТ! Что можно сделать ? Вот например www.amdm.ru - открывается все быстро, или когда лезешь через PHPMYADMIN в таблицу, просматриваешь - тоже относительно быстр. | |
|
|
|
|
|
|
|
для: fivemusic
(26.12.2007 в 11:01)
| | А какие SELECT-запросы к ней осуществляете? | |
|
|
|
|
|
|
|
для: cheops
(26.12.2007 в 12:16)
| | Ну например для вывода последних 100 добавленных текстов :
$sql="SELECT * FROM `$bd` WHERE active='0' ORDER by `down` DESC LIMIT 100";
$result = mysql_query($sql); $i=0;
while($rez=@mysql_fetch_array($result))
{
$us=str_replace("{ID}", $rez[id], _blocks($data, "TR", 2));
$us=str_replace("{LIINK}", "index.php?modul=".$_GET[modul]."&mp3=".$rez[id], $us);
if(($i%2)==0) $postrwd="#E9EBFD"; else $postrwd="#DEE1F7";
$us=str_replace("{COLOR}", $postrwd, $us); if($page=="" OR empty($page) OR $page==1) $nummp=$i+1; else $nummp=($i+(($page-1)*$num))+1;
$us=str_replace("{NP}", $nummp, $us);
$us=str_replace("{ISP}", $rez[autor], $us);
$us=str_replace("{DDOWN}", $rez[down], $us);
$users.=str_replace("{NAZ}", $rez[kompoz], $us); $i++;
}
|
| |
|
|
|
|
|
|
|
для: fivemusic
(26.12.2007 в 13:26)
| | Для поля down индекс создан? | |
|
|
|
|
|
|
|
для: Trianon
(26.12.2007 в 14:57)
| | Нет, я привел же запрос по которому создается таблица.
А в поле down считается кол-во просмотров
+ на сайте есть поиск, вот код :
if($_GET[mmd]=="autor") $ziza="WHERE active='0' AND (`autor` LIKE '%$kak') ORDER by autor, kompoz";
if($_GET[mmd]=="name") $ziza="WHERE active='0' AND (`kompoz` LIKE '%$kak') ORDER by autor, kompoz";
if($_GET[mmd]=="fraza") $ziza="WHERE active='0' AND (`xtest` LIKE '%$kak') ORDER by autor, kompoz";
$result = mysql_query("SELECT COUNT(*) FROM `$bd` $ziza");
@$posts = mysql_fetch_row($result);
$total = intval(($posts[0]-1)/$num) + 1;
$page = intval($page);
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;
$result = mysql_query("SELECT * FROM `$bd` ".$ziza." LIMIT $start, $num");
while ( $postrow[] = @mysql_fetch_array($result))
for($i = 0; $i < $num; $i++)
{
if((count($postrow)-1)<=$i) break;
$us=str_replace("{ID}", $postrow[$i][id], _blocks($data, "TR", 1));
$postrow[$i][data]=date("d.m.y",$postrow[$i][data]);
$us=str_replace("{LIINK}", "index.php?modul=".$_GET[modul]."&mp3=".$postrow[$i][id], $us);
if(($i%2)==0) $postrwd="#E9EBFD"; else $postrwd="#DEE1F7";
$us=str_replace("{COLOR}", $postrwd, $us); if($page=="" OR empty($page) OR $page==1) $nummp=$i+1; else $nummp=($i+(($page-1)*$num))+1;
$us=str_replace("{NP}", $nummp, $us);
$us=str_replace("{ISP}", $postrow[$i][autor], $us);
$us=str_replace("{DDOWN}", $postrow[$i][down], $us);
$users.=str_replace("{NAZ}", $postrow[$i][kompoz], $us);
}
|
формирование буковок вот:
function _muuzabc()
{
global $_GET;
@$dat=mysql_fetch_array(mysql_query("SELECT id,modul,db FROM `razdel` WHERE modul='music.php' OR modul='arrords.php'"));
$kiss=explode("|", $dat[db]);
for($i=0; $i<count($kiss); $i++){if($kiss[$i]!="") $_GET[mydb][$i]=$kiss[$i];}
if(!$dat) $outer="Музыка не найдена!";
else {
$pisatext=mysql_fetch_array(mysql_query("SELECT * FROM `shablon` WHERE id='$dat[id]'"));
$pisatext=$pisatext[text];
$data=$pisatext;
$lino="index.php?modul=".$dat[id];
$nnm=$pisatext;
include_once "function.inc/abc.php";
$outer=echo_abcw($nnm, $kiss[0], $_GET[abc], $lino, "-");
}
return $outer;
}
|
отображение песен на данную букву вот :
if($key=="0-9") $ziza="WHERE active=0 AND `abc` NOT REGEXP '[a-zA-zЮ-Ъю-ъ]'";
elseif($key=="е") $ziza="WHERE active=0 AND (`abc`='е' OR `abc`='╗')";
elseif($key=="х") $ziza="WHERE active=0 AND (`abc`='х' OR `abc`='и')";
else $ziza="WHERE active=0 AND `abc`='$key'";
$result = mysql_query("SELECT COUNT(*) FROM `$bd` $ziza");
@$posts = mysql_fetch_row($result);
if(!$posts[0]) $outer.="БЛА БЛА БЛА";
else
{
$total = intval(($posts[0]-1)/$num) + 1;
$page = intval($page);
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;
$urkil="index.php?modul=".$_GET[modul]."&abc=$key&numb=";
$result = mysql_query("SELECT * FROM `$bd` ".$ziza." ORDER by abc,autor,kompoz LIMIT $start, $num");
while ( $postrow[] = mysql_fetch_array($result))
for($i = 0; $i < $num; $i++)
{
if((count($postrow)-1)<=$i) break;
$us=str_replace("{ID}", $postrow[$i][id], _blocks($data, "TR", 1));
$users.=str_replace("{NAZ}", $postrow[$i][kompoz], $us);
}
}
|
| |
|
|
|
|
|
|
|
для: fivemusic
(26.12.2007 в 19:19)
| | >>Для поля down индекс создан?
>Нет...
Так создайте.
Какой смысл ожидать от огромной таблицы быстродействия, не обеспечив её индексами на тех полях, по которым ведется выборка?
Что такое active который ноль или не ноль?
Зачем Вам в этой таблице неактивные элементы?
Унесите их в отдельную. | |
|
|
|
|