Страница 1 из 1

Выборки без использования ключей

Добавлено: 2010-07-02 14:43:02
Alex Keda
сабж вот нашёл... потому что долго делается.

Код: Выделить всё

mysql> use host-food_bill
Database changed
mysql> SELECT `ID` FROM `Tasks` WHERE (`IsActive` = 'yes' AND `IsExecuted` = 'no' AND `ExecuteDate` < UNIX_TIMESTAMP() AND `Errors` < 5) ORDER BY `CreateDate` DESC LIMIT 0, 1;
+--------+
| ID     |
+--------+
| 147149 |
+--------+
1 row in set (3.38 sec)

mysql> explain SELECT `ID` FROM `Tasks` WHERE (`IsActive` = 'yes' AND `IsExecuted` = 'no' AND `ExecuteDate` < UNIX_TIMESTAMP() AND `Errors` < 5) ORDER BY `CreateDate` DESC LIMIT 0, 1;
+----+-------------+-------+------+---------------+------+---------+------+--------+-----------------------------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows   | Extra                       |
+----+-------------+-------+------+---------------+------+---------+------+--------+-----------------------------+
|  1 | SIMPLE      | Tasks | ALL  | NULL          | NULL | NULL    | NULL | 166914 | Using where; Using filesort |
+----+-------------+-------+------+---------------+------+---------+------+--------+-----------------------------+
1 row in set (0.02 sec)

mysql>   

Re: Выборки без использования ключей

Добавлено: 2010-07-08 11:19:04
Alex Keda
а таких много....
которые без ключей.
на больших базах и когда много народу - это становится проблематично
2x2 Opteron c 12 гигами рамы - а ворочается, мягко скажем, нешустро...

Re: Выборки без использования ключей

Добавлено: 2010-07-08 11:40:49
Виталий
Сейчас рефакторю. Думаю по мускулу надо тоже по чуть-чуть подчищать. Нет желания помочь? ;)

Re: Выборки без использования ключей

Добавлено: 2010-07-08 17:23:00
Alex Keda
есть.
могу вываливать сюда запросы котоыре нахожу, и предположения по тому куда именно надо прилепить ключи.
=========
но я не большой спец в MySQL и php - так, пописываю на досуге...

Re: Выборки без использования ключей

Добавлено: 2010-07-10 13:42:13
Alex Keda
да, кстати, сабжевая выборка - 99% того что у меня в логе болтается...

Re: Выборки без использования ключей

Добавлено: 2010-07-10 13:48:35
Alex Keda

Код: Выделить всё

mysql> SELECT COUNT(*) FROM Tasks;
+----------+
| COUNT(*) |
+----------+
|   145732 |
+----------+
1 row in set (1.46 sec)

mysql>     

может стоит её как-то чистить (не очень хорошая идея - мало ли чё понадобиться)
или разбивать по годам, например (более хорошая)

Re: Выборки без использования ключей

Добавлено: 2010-10-10 2:14:00
Виталий
Полезная оказалась таска... Проанализировал запросы, добавил ключей... Кроме этого еще добавил новый кеш и немного оптимизировал другие части работы с MySQL. Генерация страницы выдавала 3.5 сек. пару часов назад, сейчас уже 1.5 секунды :-) Оптимизировал получается поболе чем в 2 раза. Есть еще над чем поработать... ;)

Re: Выборки без использования ключей

Добавлено: 2010-10-10 13:37:01
Alex Keda
эм... в общем, я тоже Лохом оказался (с большой буквы =)))
у меня муся под MyISAM жёстко затюнена оказалась.
InnoDB ворочалась, бедная, на 100 метрах рамы, что ей по дефолту отдаётся, как могла.
отдали 2 гига из 12 что на машине есть - стало значительно лучше бегать и без тюнинга биллинга =))

Век живи, век учись... Один фиг - дураком помрёшь =)
Хорошо Serge подсказал...

Re: Выборки без использования ключей

Добавлено: 2010-10-12 8:01:07
serge
lissyara писал(а):Век живи, век учись... Один фиг - дураком помрёшь =)
Хорошо Serge подсказал...

:oops:
Последнее время просто часто стали попадаться сервера с тяжелыми нагруженными БД. Поэтому с innodb приходится работать ну очень часто.

Re: Выборки без использования ключей

Добавлено: 2010-10-16 12:34:12
Виталий
JBS-3 fixed.