Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Странное поведение, время запроса
Ron  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1190
Пользователь №: 41686
На форуме: 1 год, 7 месяцев, 14 дней
Карма: 21




Привет, коллеги!

Кидаю запрос:
SELECT * FROM product LIMIT 10000
- выполняется 0.02с
SELECT * FROM product WHERE product_id > 0 LIMIT 10000
- 0.16c

Как это так-то!? При том что product_id - PK AI. Ожидалось как минимум такое же время выполнения.

Есть у кого-нибудь возможность чекнуть подобные два запроса на более или менее большой БД? Чего по времени получится?



--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Oyeme  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Reality is wrong. Dreams are for real
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1708
Пользователь №: 16955
На форуме: 8 лет, 27 дней
Карма: 96




PrimaryKey негативный тоже может быть.

Сравнивается все значение ключа с условием > 0,после этого все складывается в таблицу отдельную с лимитом.

Я протестировал на 3000000 строчек и разници не заметил без использования кэша wink.gif


--------------------
Programming: Private lessons via skype £45/h

Частные уроки в Лондоне / удаленно по skype.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2756
Пользователь №: 24406
На форуме: 6 лет, 5 месяцев, 6 дней
Карма: 177




Вполне возможно такое поведение.
В первом случае, вполне возможно, дисковых операций гораздо меньше, в последнем же случае сначала пробежим по индексу, а потом по каждому id начнем читать данные с диска.


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
depp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 366
Пользователь №: 40589
На форуме: 2 года, 3 месяца, 19 дней
Карма: 22




explain сделай.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
S.Chushkin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пофигист
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 801
Пользователь №: 36058
На форуме: 4 года, 2 месяца, 26 дней
Карма: 41




Цитата (Ron @ 23.09.2016 - 14:12)
Есть у кого-нибудь возможность чекнуть подобные два запроса на более или менее большой БД? Чего по времени получится?

mySQL, ~10 млн. записей, размер таблицы с индексами ~2Г

Вариант 1:
10000 row(s) returned

Execution Time : 0.002 sec
Transfer Time : 0.058 sec
Total Time : 0.060 sec

Вариант 2:
10000 row(s) returned

Execution Time : 0.002 sec
Transfer Time : 0.055 sec
Total Time : 0.058 sec

Одинаково. Т.е. в пределах стат.погрешности. Хотя запросы выполняются немного по разному.

В общем, хочешь конкретной помощи, показывай структуру таблицы и результаты EXPLAIN.


--------------------
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 15225
Пользователь №: 4190
На форуме: 9 лет, 1 месяц, 17 дней
Карма: 457




Цитата (Ron @ 23.09.2016 - 14:12)
Ожидалось как минимум такое же время выполнения.

С чего бы вдруг одинаковое? Во втором случае проверка делается для каждой строки, а на это нужно сколько-то времени.


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
S.Chushkin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пофигист
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 801
Пользователь №: 36058
На форуме: 4 года, 2 месяца, 26 дней
Карма: 41




Цитата (sergeiss @ 23.09.2016 - 16:35)
Во втором случае проверка делается для каждой строки, а на это нужно сколько-то времени.

Ничтожно малое, - много меньше флуктуации общего времени. В данном случае.


--------------------
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5592
Пользователь №: 35718
На форуме: 4 года, 4 месяца, 3 дня
Карма: 170




Цитата (sergeiss @ 23.09.2016 - 15:35)
Во втором случае проверка делается для каждой строки

нет, там индекс


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2756
Пользователь №: 24406
На форуме: 6 лет, 5 месяцев, 6 дней
Карма: 177




Цитата (Valick @ 23.09.2016 - 12:52)
нет, там индекс

Индекс тоже нужно обойти, к тому же индекс тоже читается с диска, и как правило не весь сразу а поблочно(кроме тех случаев когда он уже находится в памяти, объем которой позволяет спокойно там жить индексу).

При большом размере результата, во многих случаях, выборка без индекса будет работать быстрее, т-к вытаскиваются все данные, а по индексу тащатся отдельные записи насилуя дисковую подсистему


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2756
Пользователь №: 24406
На форуме: 6 лет, 5 месяцев, 6 дней
Карма: 177




Цитата (S.Chushkin @ 23.09.2016 - 11:59)
Вариант 1:
10000 row(s) returned

Execution Time : 0.002 sec
Transfer Time : 0.058 sec
Total Time : 0.060 sec

Вариант 2:
10000 row(s) returned

Execution Time : 0.002 sec
Transfer Time : 0.055 sec
Total Time : 0.058 sec

Похоже на результат с SSD или высокоскоростными "вениками"


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
S.Chushkin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пофигист
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 801
Пользователь №: 36058
На форуме: 4 года, 2 месяца, 26 дней
Карма: 41




Цитата (T1grOK @ 23.09.2016 - 17:10)
Похоже на результат с SSD или высокоскоростными "вениками"

Нет, обычный двиг. Даже хуже - версия 5.6 под виндой.
Другое дело, что движок нормально настроен. И, естественно, искомая инфа в буфере, как и положено. Поэтому не важно SSD, HD или перфокарты, - мы же не диск тестируем, а запрос.


--------------------
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1190
Пользователь №: 41686
На форуме: 1 год, 7 месяцев, 14 дней
Карма: 21




Oyeme, S.Chushkin спасибо, за результаты запроса!

Цитата (sergeiss @ 23.09.2016 - 16:35)
С чего бы вдруг одинаковое? Во втором случае проверка делается для каждой строки, а на это нужно сколько-то времени.

Я мыслил следующим образом. MySQL найдет почти мгновенно стартовый product_id, поскольку он PK и начнет набирать с этого места указанное кол-во строк.

Цитата (S.Chushkin @ 23.09.2016 - 15:59)
В общем, хочешь конкретной помощи, показывай структуру таблицы и результаты EXPLAIN.

Так а чего там структуру, самая простая, PK AI и еще несколько полей. Как остальные поля могут повлиять, по ним условий никаких?

--------------
explain select * from product LIMIT 10000
--------------

+----+-------------+---------+------+---------------+------+---------+------+-------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+---------+------+---------------+------+---------+------+-------+-------+
| 1 | SIMPLE | product | ALL | NULL | NULL | NULL | NULL | 88090 | NULL |
+----+-------------+---------+------+---------------+------+---------+------+-------+-------+



--------------
explain select * from product WHERE product_id > 0 LIMIT 10000
--------------

+----+-------------+---------+-------+---------------+---------+---------+------+-------+----------- ------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+---------+-------+---------------+---------+---------+------+-------+----------- ------------+
| 1 | SIMPLE | product | range | PRIMARY | PRIMARY | 8 | NULL | 88090 | Using index condition |
+----+-------------+---------+-------+---------------+---------+---------+------+-------+----------- ------------+



Цитата (T1grOK @ 23.09.2016 - 17:00)
При большом размере результата, во многих случаях, выборка без индекса будет работать быстрее, т-к вытаскиваются все данные, а по индексу тащатся отдельные записи насилуя дисковую подсистему

Получается что так, потому что LIMIT 100 дает мгновенный результат. Значит дело не в способе поиска, а именно в механизме набора данных, то есть в диске, в конечном счете. Но у меня же SSD!




--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
S.Chushkin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пофигист
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 801
Пользователь №: 36058
На форуме: 4 года, 2 месяца, 26 дней
Карма: 41




Цитата (Ron @ 24.09.2016 - 04:25)
Значит дело не в способе поиска, а именно в механизме набора данных, то есть в диске, в конечном счете.

По правильному, надо сделать 2-3 попытки, чтобы данные попали в буфер.
Иначе, действительно будешь мерить не скорость запроса, а скорость чтения с диска.

Цитата
Но у меня же SSD!

SSD тоже медленнее, чем RAM, на порядок. Хотя и быстрее обычного HD на порядок.


--------------------
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
S.Chushkin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пофигист
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 801
Пользователь №: 36058
На форуме: 4 года, 2 месяца, 26 дней
Карма: 41




Цитата (Ron @ 24.09.2016 - 04:25)
Так а чего там ...

Нормально. У меня такой же Explain.


--------------------
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1190
Пользователь №: 41686
На форуме: 1 год, 7 месяцев, 14 дней
Карма: 21




S.Chushkin, спасибо!

И всем откликнувшимся спасибо! )




--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса