в базе данных MySQL У меня есть следующая таблица:MySQL запрос слишком медленно
- идентификатор INT Первичный ключ
- отметка времени метки времени
- TPID VARCHAR
- tpidno Int
- SerialNumber Int
- command varchar
- sequence int
- VARCHAR начальный промежуток
- EndTime VARCHAR
- PosData VARCHAR
- ...
У меня также есть 3 вторичные показатели:
- TPID, tpidno
- SerialNumber
- команда
Таблица содержит ~ 2.5х строк и о 500MB
Хотя у меня есть сложные запросы, которые работают быстро, у меня есть большая задержка на этих двух простых запросах:
Select id, sequence, PosData
From myTable
Where serialNumber = 130541
and command = "myCommand"
and startTime = "20140106194300"
and endtime = "20140106200000"
(~ 4.4sec)
Select id
From myTable
Where serialNumber = 130541
and command = 'myCommand'
and sequence = 128
(~ 4.5sec)
ли больше показателей, как
- SerialNumber, команда
- команда, последовательность
или
- SerialNumber, команда, последовательность
ускорит запросы?
При первом запросе может возникнуть проблема с типом данных startTime и endTime? если бы они были int вместо varchar, было бы лучше?
любые другие предложения?
Почему ваши даты начала и окончания поля не 'date' или' datetime' типы данных? С таким количеством записей я уверен, что больше индексов помогут. – Revent
никакой конкретной причины, вероятно, потому, что в базе данных создать было быстрее, чтобы добавить данные, не отбрасывая их. сравнение varchar медленнее, чем datetime? – Reven
При изменении типа данных поля, которое существует в индексе, индекс нуждается в отдыхе или он также обновлен? Я думаю, что скорость базы данных замедлилась с момента изменения типа данных (tpid от int до smallint и последовательности от int до mediumint) – Reven