![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
Koresh |
|
||||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 22.5.2006 Репутация: нет Всего: нет |
Доброго времени суток всем!
Столкнулся со следующей проблемой. Есть база данных (даже 2) в одной полтора миллиона записей, вторая поменьше, где-то 200 тысяч. В общем нужно получить количество и вывести его. Делаться должно быстро. Так вот я, начитавшись всяких мануалов наивно, надеясь на скорость сделал так:
В результате получил время выполнения скрипта 6 секунд, что ОЧЕНЬ плохо. Я уже думла быстрое получение нереально, НО в PHP My Admin при введении такого простого запроса как:
он же как-то выводит информацию:" Показывает записи 0 - 29 (1,491,259 всего, Запрос занял 0.0008 сек)". Собственно такого времени выполнения мне бы хватило, да и количество получается. По всей видимости обрабатывается запрос, без буферизации. Может кто подскажет как это сделать? И ещё вопросик, в MyAdmin количество при каждом нажатии на кнопку разное... собственно конечно тут точность не так критична... но хотелось бы получить точную цифру. |
||||
|
|||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 2 Всего: 71 |
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Koresh |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 22.5.2006 Репутация: нет Всего: нет |
To Gold Dragon: Я извиняюсь за назойливось, но я прочитал все схожие темы, включая и ту, на которую ты дал линк. Но если я правильно понял, то то что там изложено предлагает опять таки
как оптимал. Но ведь PHP My Admin получает как-то в 10 раз быстрее??? Хотелось бы узнать как. И ещё - вопрос с "плавающим" значением количество в том же админе остался в силе |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 2 Всего: 71 |
'SELECT COUNT(*) FROM files - в любом случае будет работать быстрее если больше ни каких условий в запросе не будет. Если будет, то скорость уже не гарантирована... А почему у тебя так? Ну может что-то в настройках сервера...
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Koresh |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 22.5.2006 Репутация: нет Всего: нет |
Так вот весьма интересно, почему собственно не так. MySQL 5 версии (угораздило кому-то поставить...)... Просто интересно, кто-нибудь может сказать, сколько реально должро получаться количество с таким размером базы.
|
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
Иди в схему information_schema и ищи в таблице tables нужную таблицу в требуемой схеме. Вытягивай значение поля table_rows. Вот так:
КАк я понимаю, оптимизатор так и должен определять count(*), если не задано условий. Даже не знаю, почему так не происходит... Это сообщение отредактировал(а) skyboy - 1.8.2006, 23:47 |
|||
|
||||
Koresh |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 22.5.2006 Репутация: нет Всего: нет |
Всем спасибо за ответы, проблему решил таким образом:
Но вот проблема с "плавающим" значением осталась. При нажатии на кнопк обновить, значение изменяется +- 5000 ![]() |
|||
|
||||
Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: 21 Всего: 73 |
Хм... Проверил. Правда так ![]()
Кстати, тоже дает среднепотолочную погрешность ![]() По вопросу пока ничего не выгуглил. -------------------- Теперь при чем :P |
|||
|
||||
Koresh |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 22.5.2006 Репутация: нет Всего: нет |
Сорри за опоздалый ответ - разобрался давно. При переходе с типа таблицы InnoBD на MyIsam проблема ушла сама собой. При получении количества через COUNT запрос работает с нужной скоростью (даже больше нужной
![]() |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |