Итог: Добавление нескольких индексов очень поможет:
INDEX(islemkey)
INDEX(site, durum, islem_baslangic)
INDEX(durum, site, site_durum, id)
Подробности
UPDATE odemeler SET step='odeme_kontrol' WHERE islemkey = '78TNgyacgjwt'
Вам нужно INDEX(islemkey)
on odemeler
.
`expire` varchar(255) DEFAULT NULL,
AND islem_baslangic LIKE '2018-11-29%'
Если expire
является DATE
или DATETIME
, то оно должно быть объявлено таковым.Если это какой-то нестандартный формат даты, то его нужно конвертировать.То же самое для islem_baslangic
и любых других столбцов, которые содержат даты.
SELECT * FROM odemeler WHERE site = '71' AND durum = '1'
odemeler
нуждается в этом составном INDEX(site, durum)
;При желании они могут быть перечислены в обратном порядке.
SELECT id,tcno, miktar,durum,islem_baslangic,site,site_durum
FROM odemeler
WHERE site = '74' AND durum = '1' AND site_durum = '0'
ORDER BY id DESC LIMIT 20
Требуется
INDEX(site, durum, site_durum, -- in any order
id) -- last
Причина
Без используемого индекса, большая частьзапросы, отображаемые в PROCESSLIST
, должны сканировать всю таблицу.Это занимает много процессора.И это замедляет каждый запрос.И тогда запросы складываются.(Это было много запросов в PROCESSLIST
сразу.)
При использовании используемых индексов каждый запрос будет приходить и идти намного быстрее и потреблять гораздо меньше ресурсов ЦП.Это цель индексов!