MySQL работает сверх-медленно

Varg

Guest
MySQL работает сверх-медленно

Такая вот проблема.
Есть база на 68 000 записей, и простейший Select по одному из полей работает крайне медленно. Секунд 200...

Кроме оптимизации в чём может быть проблема?
Все поля (их всего 7) класса text. Не более 300 символов в каждом поле.

База была сонвертирована из формата Excel 4.0
Занимает мегов 20...
 

tony2001

TeaM PHPClub
Re: MySQL работает сверх-медленно

сделай EXPLAIN своему запросу и посмотри что он говорит.
 

Unregistered

Guest
Автор оригинала: tony2001
mysql в шелле
EXPLAIN текст_твоего_запроса_без_изменений;
А есть разница из шелла скармливать или из ПХП?
В общем я это скормил из ПХП и он ответил:

catalog
ALL

68160
where used

И в общем всё...
catalog - имя таблицы
68160 - число строк.
 

tony2001

TeaM PHPClub
у тебя ключи в таблице есть?
покажи запрос и объясни его.
 

Varg

Guest
Автор оригинала: tony2001
у тебя ключи в таблице есть?
покажи запрос и объясни его.
PHP:
$TEST = "EXPLAIN SELECT * FROM catalog WHERE (num <= '3' AND num >= '1')";
$result = mysql_query ($TEST) or die ("ERROR! ".mysql_error());
while ($A = mysql_fetch_array($result,MYSQL_NUM)) {
      for ($i = 0 ; $i < sizeof($A) ; $i++) {
            echo "[$i] $A[$i]<br>";
      }
      echo "--------------<br>";
}
exit;
Вот код с запросом соотв. Ключей нету. Все поля равнозначны класса text.
 

tony2001

TeaM PHPClub
>Вот код с запросом соотв. Ключей нету. Все поля равнозначны
>класса text.
а что такое num ?
не ясно - что ты хочешь от муськи - она ищет в двухметровой таблице БЕЗ КЛЮЧЕЙ, и ты хочешь, чтобы она быстро работала ?
сделай ключ по num - будет летать.
 

Varg

Guest
Автор оригинала: tony2001
&gt;Вот код с запросом соотв. Ключей нету. Все поля равнозначны
&gt;класса text.
а что такое num ?
не ясно - что ты хочешь от муськи - она ищет в двухметровой таблице БЕЗ КЛЮЧЕЙ, и ты хочешь, чтобы она быстро работала ?
сделай ключ по num - будет летать.
Вообще видимо num должно быть числовым полем. Можно менять тип данных в готовой таблице?

И ещё, ключ по num - это как?
 

tony2001

TeaM PHPClub
Автор оригинала: Varg
Вообще видимо num должно быть числовым полем. Можно менять тип данных в готовой таблице?
И ещё, ключ по num - это как?
phpmyadmin.org - скачай, поставь.
купи себе книжку Дюбуа по MySQL - хорошая книжка.
 

Varg

Guest
Автор оригинала: tony2001
phpmyadmin.org - скачай, поставь.
купи себе книжку Дюбуа по MySQL - хорошая книжка.
Хорошо. Ещё вопрос.
Что именно делает с базой функция оптимизации?
 

tony2001

TeaM PHPClub
Автор оригинала: Varg
Хорошо. Ещё вопрос.
Что именно делает с базой функция оптимизации?
OPTIMIZE ?
-----
OPTIMIZE TABLE should be used if you have deleted a large part of a
table or if you have made many changes to a table with variable-length rows
(tables that have VARCHAR, BLOB, or TEXT columns).
Deleted records are maintained in a linked list and subsequent INSERT
operations reuse old record positions. You can use OPTIMIZE TABLE to
reclaim the unused space and to defragment the data file.
-----
коротко - дефрагментация таблицы.
 

Varg

Guest
Спасибо. :)
Дальше, как SELECT'om вывести длинну максимальной ячейки? Что-то типа MAX(strlen(field)) ?

И есть ли книга Дюбуа в сетке? :)
 

tony2001

TeaM PHPClub
Автор оригинала: Varg
Спасибо. :)
Дальше, как SELECT'om вывести длинну максимальной ячейки? Что-то типа MAX(strlen(field)) ?
И есть ли книга Дюбуа в сетке? :)
да,
SELECT MAX(LENGTH(path)) FROM table;
нет, ее скачать нельзя.
лучше купить, книга хорошая.
 

Varg

Guest
Автор оригинала: tony2001
да,
SELECT MAX(LENGTH(path)) FROM table;
нет, ее скачать нельзя.
лучше купить, книга хорошая.
Ну вы просто спасли мне жизнь :)
И последний жизненно важный вопрос:
Как экспортнуть локальную базу данных в файл, и потом залив её на сервер распаковать в сетевую базу?

И ещё, я понимаю, инвалид я, сижу под виндой 98. Не смейтесь :) И вот, где тут в Муське есть шелл? А то висит в памяти демон и как ему скармливать запрос кроме как чрез ПХП не смыслю.
 

telepuzik

тинки-винки
зайди туда, откуда "демона" запускаешь... там куча файлов :) вот и запусти mysql.exe - вот тебе и командная строка муськи.
 

tony2001

TeaM PHPClub
Автор оригинала: Varg
Ну вы просто спасли мне жизнь :)
И последний жизненно важный вопрос:
Как экспортнуть локальную базу данных в файл, и потом залив её на сервер распаковать в сетевую базу?
посмотри ман на тему:
LOAD DATA INFILE
&
SELECT ... INTO OUTFILE
либо есть еще mysqldump...
 
Сверху