Общие > Базы данных

По MySQL вопрос (тормоза, структура базы)

(1/3) > >>

Антошка:
Таблица 100000 записей (сто тысяч) следственно примерно так
НОМЕР КАТЕГОРИЯ НАЗВАНИЕ ОПИСАНИЕ

категорий 23 штуки, все в разнобой

делаю у себя на компе все по этому сразу понимаю что не быстро должно работать но не настолько... итак:

задача вывести категории и следственно сколько записей в категории

mysql_query("SELECT categor, id, COUNT(categor) FROM `$table` GROUP BY categor");

вот примерно так забираю
время вывода страницы в районе 5-6 минут при этом процесс Mysql душит иные процессы на Free и забирает 80-85% проца на это время.

подумал....
сделал индекс на поле categor, по описалову должно бы все стать очень быстро (особенно если учесть что из 200мб базы, она стала 240мб, тока индексы на 40 метров)
но процесс стал быстрее но все также хренова 3-4 минуты.
У хостера все будет быстрее не сомневаюсь, но так как предполагается достаточно активная нагрузка, то боюсь он это не одобрит  

вопрос чем можно помочь сейчас?
один из вариантов сделать еще табличку туда затащить все категории и по CRON запускать пересчет кол-во записей раз в сутки. Но кроме этого?

commander:
если ты хочешь что-бы тебе поногли... выведи свои таблицы примерно в таком формате... :
create table test
(
test_id int,
test_name varchar(1)
);
А то по твоему прищуренному эссе ничего не понятно... кроме того что ты очень гордишся что у тебя большая БД... хотя не такая она и большая...

Меняздесьдавнонет:
во-первых, запрашивать id в таком запросе бесполезно
во-вторых, отлаживать запросы надо в консоли, а не выводя на страницу.
в-третьих, приведи здесь результат вывода вот такого запроса
EXPLAIN SELECT categor, COUNT(categor) FROM имя_таблицы GROUP BY categor

Антошка:

--- Цитировать ---commander:
если ты хочешь что-бы тебе поногли... выведи свои таблицы примерно в таком формате... :
create table test
(
test_id int,
test_name varchar(1)
);
А то по твоему прищуренному эссе ничего не понятно... кроме того что ты очень гордишся что у тебя большая БД... хотя не такая она и большая...
--- Конец цитаты ---



Пожалуйста...
CREATE TABLE `tm_books` (
  `id` int(11) NOT NULL default \'0\',
  `categor` varchar(255) binary NOT NULL default \'\',
  `nazvanie` varchar(255) binary NOT NULL default \'\',
  `data` year(4) NOT NULL default \'0000\',
  `cena` decimal(8,2) NOT NULL default \'0.00\',
  `url` varchar(255) NOT NULL default \'\',
  `kratko` text NOT NULL,
  `image` text NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `categor` (`categor`)
) TYPE=MyISAM PACK_KEYS=0;
   

а можно для самообразования, узнать в каком месте у меня фразы гордости что большая база?
база не большая не маленькая.. да действительно есть базы и гиговые, а есть и килобайтные, для большиства база на 200 метров все таки большая...

Антошка:

--- Цитировать ---RomikChef:
во-первых, запрашивать id в таком запросе бесполезно
--- Конец цитаты ---


дык, я потом использую его...
правда выкинув его нахрен время запроса сократилось с 33 секунд, до 9....
вот видимо и ответ ;))
без всяких понтов


--- Цитировать ---RomikChef:
во-вторых, отлаживать запросы надо в консоли, а не выводя на страницу.
--- Конец цитаты ---

да я отлаживаю в консоле... просто enn я отладил все что мог, как я думал ;(


--- Цитировать ---RomikChef:
в-третьих, приведи здесь результат вывода вот такого запроса
EXPLAIN SELECT categor, COUNT(categor) FROM имя_таблицы GROUP BY categor
--- Конец цитаты ---


table  type  possible_keys  key  key_len  ref  rows  Extra  
tm_books index NULL categor 255 NULL 78573 Using index

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии