stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
 |
« Ответ #105 : 10 Декабря 2012, 17:37:44 » |
|
судя по html, что выдало: SELECT SQL_CALC_FOUND_ROWS p.*, u.fio, u.name FROM pays p LEFT JOIN users u ON p.mid = u.id WHERE 1 AND p.time >= '1347051600' AND p.category<>3 ORDER BY time DESC LIMIT 0,15
Строк: 15. Время выполнения sql: 5.1344 сек
теперь перестали отрабатываться javascript еще не разбирался, пути проверил, с ними все ок.
|
|
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
 |
« Ответ #106 : 10 Декабря 2012, 17:38:37 » |
|
и инфо выдает по платежу выдает:
$VAR1 = {'tm_end' => '1357635473','tm_start' => 1355043473,'cash' => 0};
$VAR1 = {'usr_grps' => ',4,9,13,12,','privil' => ',1,3,2,17,11,12, 13,27,30,31,50,51, 52,55,100,61,90,69, 70,71,72,73,74,75, 76,77,78,79,80,81, 94,95,','login' => 'login'};
|
|
|
Записан
|
|
|
|
Efendy
|
 |
« Ответ #107 : 10 Декабря 2012, 17:45:20 » |
|
Строк: 15. Время выполнения sql: 5.1344 сек
ты на калькуляторе что ли запускаешь? у меня платежей поменьше, но выполняется сотые доли секунды. Конфигурая мускула не huge? Оперативы скока?
|
|
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
 |
« Ответ #108 : 10 Декабря 2012, 18:00:57 » |
|
1 гиг на ESXi
|
|
|
Записан
|
|
|
|
Efendy
|
 |
« Ответ #109 : 10 Декабря 2012, 18:06:47 » |
|
1 гиг на ESXi
ну, блин, это же реально элементарный sql. Отсортировать несколько десятков тысяч записей по индексу... SELECT * FROM pays WHERE time > 1347051600 AND category<>3 ORDER BY time DESC LIMIT 1; SELECT * FROM pays WHERE time > 1347051600 ORDER BY time DESC LIMIT 1; сколько выполняются эти запросы?
|
|
|
Записан
|
|
|
|
Efendy
|
 |
« Ответ #110 : 10 Декабря 2012, 18:09:55 » |
|
Та гоневная у тебя конфигурация мускула. Вот, ради прикола посмотрел sql в нодени50:
SELECT SQL_CALC_FOUND_ROWS p.*,u.name,u.grp FROM pays p LEFT JOIN users u ON u.id=p.mid WHERE (u.grp IN (0,1,2,3,4) OR u.grp IS NULL) AND ((p.type=40 AND (p.reason='1' OR p.coment='1')) OR (p.admin_id=1 AND p.type=10)) AND p.time>1354309200 AND p.time<1356987600 ORDER BY p.time DESC LIMIT 0,40
тут гораздо худшие условия и никто не жалуется. Уверен, что запрос в NoDeny+ будет выполняться менее секунды на нормально сконфигурированном мускуле
|
|
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
 |
« Ответ #111 : 10 Декабря 2012, 19:57:45 » |
|
1 гиг на ESXi
ну, блин, это же реально элементарный sql. Отсортировать несколько десятков тысяч записей по индексу... SELECT * FROM pays WHERE time > 1347051600 AND category<>3 ORDER BY time DESC LIMIT 1; SELECT * FROM pays WHERE time > 1347051600 ORDER BY time DESC LIMIT 1; сколько выполняются эти запросы? 0.01 sec и 0.00 sec
|
|
|
Записан
|
|
|
|
Efendy
|
 |
« Ответ #112 : 10 Декабря 2012, 21:33:29 » |
|
SELECT SQL_CALC_FOUND_ROWS p.*, u.fio, u.name FROM pays p FORCE INDEX (time) LEFT JOIN users u ON p.mid = u.id WHERE 1 AND p.category<>3 ORDER BY time DESC LIMIT 0,15;
сколько времени?
|
|
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
 |
« Ответ #113 : 11 Декабря 2012, 00:31:18 » |
|
15 rows in set (13.79 sec)
|
|
|
Записан
|
|
|
|
Efendy
|
 |
« Ответ #114 : 11 Декабря 2012, 01:43:34 » |
|
15 rows in set (13.79 sec)
создал тестовою таблицу с похожими на реальность данными - 250 тыс строк. Действительно запрос выполняется долго - примерно 1,5 сек. Mysql однозначно чудит. Придется убрать JOIN и сделать 2 запроса. Сегодня сделаю
|
|
|
Записан
|
|
|
|
Efendy
|
 |
« Ответ #115 : 11 Декабря 2012, 12:54:37 » |
|
Заапдейтся и скажи результат
|
|
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
 |
« Ответ #116 : 11 Декабря 2012, 14:01:36 » |
|
mysql> SELECT SQL_CALC_FOUND_ROWS p.*, u.fio, u.name FROM pays p FORCE INDEX (time) LEFT JOIN users u ON p.mid = u.id WHERE 1 AND p.category<>3 ORDER BY time DESC LIMIT 0,15;
15 rows in set (14.97 sec)
|
|
|
Записан
|
|
|
|
Efendy
|
 |
« Ответ #117 : 11 Декабря 2012, 15:49:16 » |
|
mysql> SELECT SQL_CALC_FOUND_ROWS p.*, u.fio, u.name FROM pays p FORCE INDEX (time) LEFT JOIN users u ON p.mid = u.id WHERE 1 AND p.category<>3 ORDER BY time DESC LIMIT 0,15;
15 rows in set (14.97 sec)
причем здесь это? Ты апдейтился? Без всякой консоли, сколько времени занимает отображение платежей судя по дебагу?
|
|
|
Записан
|
|
|
|
stix
NoDeny
Спец
Карма: 72
Offline
Сообщений: 1872
Nodeny Support Team
|
 |
« Ответ #118 : 11 Декабря 2012, 16:07:22 » |
|
да, javascript кстати так и не работает ) надо будет разобраться в чем трабл
на все запросы Elapsed time: 4.124116 sec
|
|
|
Записан
|
|
|
|
Efendy
|
 |
« Ответ #119 : 11 Декабря 2012, 16:24:52 » |
|
Смари: mysql> select count(*) from del2; +----------+ | count(*) | +----------+ | 292040 | +----------+ 1 row in set (0.08 sec)
mysql> select count(*),category from del2 group by category; +----------+----------+ | count(*) | category | +----------+----------+ | 9520 | 1 | | 4120 | 2 | | 200 | 3 | | 22360 | 20 | | 3160 | 50 | | 40480 | 99 | | 89760 | 100 | ... ... | 37080 | 423 | | 34240 | 444 | +----------+----------+ 30 rows in set (0.10 sec)
mysql> RESET QUERY CACHE; Query OK, 0 rows affected (0.00 sec)
mysql> SELECT p.*, u.fio, u.name FROM pays p LEFT JOIN users u ON p.mid = u.id WHERE 1 AND p.time >= '1347138000' AND p.category<>3 ORDER BY time DESC LIMIT 0,15; 15 rows in set (0.00 sec) Расшифровываю. 300 тысяч записей. По всем условиям стоят индексы. Выборка занимает ноль, точка, два нуля секунд! mysql-server-5.5.28, занимает 637 Мб ОЗУ.
|
|
|
Записан
|
|
|
|
|