|
Медленное выполнение запроса
|
|||
---|---|---|---|
#18+
Hi! Суть проблемы в следующем. Имеем таблицу куда записываются данные с определенной переодичностью (5 раз в секунду например) работает все шустро. Таблица Chanel: Имя поля Тип поля Размер CHANEL_ID INTEGER 11 поле ID номера канала TIME_ID INTEGER 11 поле ID времени DATA TEXT 255 поле данные Запись: INSERT INTO Chanel VALUES(запись ID номера канала, запись ID времени, запись данных) Но вот теперь хотим получить последнию запись с самым большим значением по полю TIME_ID SELECT * FROM Chanel ORDER BY TIME_ID DESC LIMIT 1 И началось сервер MySQL загружет проц на все 100% секунды на 2, а таких запросов может быть подряд штук 100. Зарание благодарен. P.S. Работаю с MySQL (да и вобще с базами) недавно так, что мог запросто пропустить какой-нибуть нюанс при создании таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2004, 14:52 |
|
Медленное выполнение запроса
|
|||
---|---|---|---|
#18+
A ne mogli by Vy soobshit - kakie est v tablice indexy? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2004, 15:16 |
|
Медленное выполнение запроса
|
|||
---|---|---|---|
#18+
А цель сразу узнать наибольший ID? Может стоит использовать LAST_INSERT_ID MySQL.com предлагает: Код: plaintext 1. 2.
. http://sql.ru/]mahoune ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2004, 15:29 |
|
Медленное выполнение запроса
|
|||
---|---|---|---|
#18+
A ne mogli by Vy soobshit - kakie est v tablice indexy? Я считал, что по умолчанию создаются :-\ Если не затруднит, простую строку создания индекса для какого либо поля или в каком разделе документации искать (очень беглый просмотр не дал обнаружить сразу - где описание создания индекса) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2004, 15:30 |
|
Медленное выполнение запроса
|
|||
---|---|---|---|
#18+
mahoune У меня записывает один процес, а считывает другой. Я так понял, что LAST_INSERT_ID работает, только в том же процесе который и записывал. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2004, 15:33 |
|
Медленное выполнение запроса
|
|||
---|---|---|---|
#18+
Net problem: create index my_own_index on mytable (TIME_ID); ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2004, 15:38 |
|
Медленное выполнение запроса
|
|||
---|---|---|---|
#18+
Ну не совсем процесс, скорее подключение. Но с индексами идея очень правильная! CREATE INDEX Syntax . http://sql.ru/]mahoune ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2004, 15:45 |
|
Медленное выполнение запроса
|
|||
---|---|---|---|
#18+
Еще раз прочитал документацию. Там написано, что все индексы автоматически создаются во время выполнения CREATE TABLE Так, что я так понимаю дело не в индексах. P.S. посмотрел какталог базы - для каждой таблицы есть свой файл индекса с расширением MYI ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2004, 17:11 |
|
Медленное выполнение запроса
|
|||
---|---|---|---|
#18+
> Там написано, что все индексы автоматически создаются во время выполнения процитируйте пожалуйста, где это там такое написано. скорее всего вы перепутали файл для индекса MYI с самим индексом, который разработчик по свему успотрению делает для тех полей, по которым нужно записи искать, сортировать и идентифицировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2004, 17:50 |
|
Медленное выполнение запроса
|
|||
---|---|---|---|
#18+
mahoune Сходу не получилось кмандой этой воспользоваться :-\ Но есть у меня прога EMS MySQL Manager так вот она показывает, что не у одной базы индексов нет. Создал с ее помощью индекс и сделал запрос. скорость значительно возросла, нагрузка на проц упала. Я так понимаю, что вопреки документации CREATE TABLE никаких индексов автоматом не создала. Понятно, что теперь я укажу при создании таблицы принудительно создавать индекс, но почему так получилось? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2004, 18:03 |
|
Медленное выполнение запроса
|
|||
---|---|---|---|
#18+
но просто интересно, а какие индексы могла бы по умолчанию создать команда create table. по всем полям и по всем комбинациям полей штоль... где ж такое в документации-то... эта команда создает индексы по полям, если сказать primary key в определении поля, например. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2004, 18:23 |
|
Медленное выполнение запроса
|
|||
---|---|---|---|
#18+
fedd Вот тут в документации написано( CREATE_INDEX ): Обычно все индексы создаются в таблице во время создания самой таблицы командой CREATE TABLE. See section 6.5.3 Синтаксис оператора CREATE TABLE. CREATE INDEX дает возможность добавить индексы к существующим таблицам ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2004, 22:31 |
|
Медленное выполнение запроса
|
|||
---|---|---|---|
#18+
Ключевое слово в куске текста что ты привел "обычно" :)) В этом выражении имеется ввиду, что индексы обчно создают в команде создания таблицы, передавая необходимые значения и параметры! Плюс еще вот такой текст из доки: Команда CREATE TABLE ... SELECT не создает автоматически каких-либо индексов. Это сделано преднамеренно, чтобы команда была настолько гибкой, насколько возможно. Чтобы иметь индексы в созданной таблице, необходимо указать их перед данной командой SELECT. Косвенно он говорит о том что и сама команда CREATE TABLE тоже "гибкая" и никаких индексов автоматически не создает! . http://sql.ru/]mahoune ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2004, 15:15 |
|
|
start [/forum/topic.php?fid=47&msg=32392651&tid=1855459]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
98ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 204ms |
0 / 0 |