Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: SQL. Выборка. Оптимизация.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
lastdays
Отправлено: 24 Января, 2016 - 09:33:57
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


Помог: 7 раз(а)




Друзья, привет!

Есть sql запрос:

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.  `b`.`id`, `b`.`user`,`b`.`level`,`b`.`pol`,
  3.  `bn`.`uid`,`bn`.`x`,`bn`.`y`,`bn`.`cfight`,`bn`.`time_die`,`bn`.`gr_bot`,`bn`.`nature_id`,
  4.  `fb`.`id`,`fb`.`turn`,`fb`.`type`,
  5.  `ub`.`chp`,`ub`.`cfight`,`ub`.`nature_id`
  6. FROM  `bots` AS `b`
  7. LEFT JOIN  `nature_bots` AS `bn`
  8.  ON (`b`.`id` = `bn`.`uid`)
  9. LEFT JOIN  `fights`  AS `fb`
  10.  ON (`fb`.`id`=`bn`.`cfight` AND `fb`.`type`!='finish')
  11. LEFT JOIN `users_battle` AS `ub`
  12.  ON (`ub`.`cfight` = `fb`.`id` AND `ub`.`nature_id`=`bn`.`nature_id` AND `fb`.`turn`!='finish' AND `fb`.`type`='notf' )
  13. WHERE
  14.  `bn`.`x`=4 AND `bn`.`y`=1



Запрос отработал:
Вариант №1 ( 3 записи )
Отображение строк 0 - 2 (3 всего, Запрос занял 0.0010 сек.)
Вариант №2 ( 1005 записей )
Отображение строк 0 - 49 (1005 всего, Запрос занял 0.0020 сек.)
Вариант №3 (12027 записей )
Отображение строк 0 - 49 (12027 всего, Запрос занял 0.0020 сек.)

Скрипт показывает: Запрос выполнялся 0.00025001502037048 миллисекунд данных: 12027

Все три запроса в среднем 0.0010 сек.

-------------------------------- ----
Все поля таблиц где происходит сравнение имеют одинаковую кодировку, тип.
Cозданы индексы, в каждой таблице это id = AUTO_INCREMENT и атрибут UNSIGNED.
Поля таблиц: id, cfight, nature_id, имеют тип int(11)
turn, type имеют тип varchar(10), вот думаю изменить на тип ENUM
-------------------------------- ----

В чем вопросы ?

- Во-первых меня беспокоит время выполнения запроса, забавно что при огромной разнице оно одинаково.
- Как можно оптимальнее написать запрос, имея ввиду:
Важные данные только в одной таблице (bots), это общая информация.
Все последующие страницы, дополнительная информация, если ничего не найдено, возвращает null.
 
 Top
LIME
Отправлено: 24 Января, 2016 - 09:44:27
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




lastdays пишет:
вот думаю изменить на тип ENUM
имеет смысл если учавствуют в условиях выборки
иначе пофиг(ну по запросам видно что стоит)
еще есть смысл чтоб ограничить возможные значения при заполнении
lastdays пишет:
забавно что при огромной разнице оно одинаково
смотря что считать огромной разницей
смотри explain
индексам пофиг сколько данных
важнее как они по дереву индексов пробегают
на маленьких данных может не быть разницы либо потому что они маленькие либо потому что индекс удачно построен
поставь себе mysqlworkbench если мускул
в этом инструменте очень хороший визуальный эксплэйн
ну и погугли конечно как вообще пользоваться эксплэйном
ну и на сладкое погугли как устроен BTREE в мускуле
поймешь как правильно индексы строить
ну и совсем на сладкое погугли что есть покрывающие индексы

(Отредактировано автором: 24 Января, 2016 - 09:45:37)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB