Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2017, 15:49   #1
klim8
Пользователь
 
Регистрация: 07.08.2016
Сообщений: 23
По умолчанию Что влияет на скорость выполнения запроса?

Используется:
Комп:
- 2,6Ггц
- 6,0 Гб ОЗУ
- Win 7x64

Программы:
- OpenServer
- Access - 2016
- MySql 5.7 x 64
- Odbc - mysql-connector-odbc-5.3.7-winx64

Всё установлено и используется на одном компьютере

Характеристики*таблицы:
- кол строк предполагается - больше 1,0 млн
- количество столбцов ~ 20 штук

Таблица (tbl8)
Кол. строк - 12 425 строк
Объём - 24,6 Мб

Код:
		CREATE TABLE `tbl5` (
			`id` INT(11) NOT NULL AUTO_INCREMENT,
			`tbl` LONGTEXT NULL,
			`idsub` INT(20) NOT NULL,
			`pol_3` INT(11) NULL DEFAULT NULL,
			`pol_4` LONGTEXT NULL,
			`pol_5` LONGTEXT NULL,
			`pol_6` LONGTEXT NULL,
			`pol_7` LONGTEXT NULL,
			`pol_8` LONGTEXT NULL,
			`pol_9` LONGTEXT NULL,
			`pol_10` LONGTEXT NULL,
			`pol_11` LONGTEXT NULL,
			`pol_12` LONGTEXT NULL,
			`pol_13` LONGTEXT NULL,
			`pol_14` LONGTEXT NULL,
			`pol_15` LONGTEXT NULL,
			`pol_16` LONGTEXT NULL,
			`pol_17` LONGTEXT NULL,
			UNIQUE INDEX `id` (`id`)
		)
		COLLATE='utf8_general_ci'
		ENGINE=InnoDB
		AUTO_INCREMENT=240013
		;
В таблице тип полей "LONGTEXT" принят как предварительный, для проверки работы базы... Потом полям будут присвоены необходимые типы: LONGTEXT, TEXT, числа, даты и т.д. В полях: pol_9, pol_10, pol_11 используется много строчный текст более 1 000 символов. В остальных полях просто текст "ТЕКСТ _ ЗАПИСИ pol_n"

Запрос
Выполняем запрос в программе HeidiSql из таблицы tbl8
Код:
select*
	from
	    `01tst`.`tbl8`
	where
	    (
	        `01tst`.`tbl8`.`idsub` = 2
	    )
Запрос выполняется 2 сек.
Когда количество строк достигает более 100 000 - длительность выполнения запроса 40 сек.

Вопрос
Как уменьшить длительность выполнения запроса?
Что влияет на длительность выполнения запроса?
Изображения
Тип файла: jpg 444.jpg (115.5 Кб, 124 просмотров)
klim8 вне форума Ответить с цитированием
Старый 08.02.2017, 16:10   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Как уменьшить длительность выполнения запроса?
-индексация полей поиска.
-индексация полей связи.
-уменьшение объема пересылаемой информации. (число записей x число полей x размеры полей)

Цитата:
Когда количество строк достигает более 100 000
это те которые будет "смотреть" пользователь ?
он будет смотреть их все до единой?
да, конечно же.
и сколько же времени он их будет смотреть?
по одной секунде на запись 100 000/3600 = 27 часов(!)

не качать огромные тонны никому не нужной сырой инфы.

Цитата:
В полях: pol_9, pol_10, pol_11 используется много строчный текст более 1 000 символов.
и пользователь готов просмотреть ВСЕ 100 000 X 3 текстов ?
рекомендация та же.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 08.02.2017, 16:13   #3
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
ENGINE=InnoDB
В частности это (извиняюсь, в дисциплине "БД" не силён). Помимо InnoDB существует система MyISAM. При поверхностном изучении выяснил, что одна из них быстрая, но зато другая - надёжнее. Только что посмотрел на википедии и выяснил, что по быстродействию выигрывает MyISAM. Попробуйте в качестве эксперимента поставить её вместо InnoDB. Если для вас надёжность не принципиальна, можете и остаться на MyISAM
Вадим Мошев вне форума Ответить с цитированием
Старый 08.02.2017, 16:15   #4
klim8
Пользователь
 
Регистрация: 07.08.2016
Сообщений: 23
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
это те которые будет "смотреть" пользователь ?
он будет смотреть их все до единой?
Делается запрос на выборку.
Запрос будет содержать ориентировочно от 2 до 200 строк.
klim8 вне форума Ответить с цитированием
Старый 09.02.2017, 20:00   #5
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,156
По умолчанию

Есть замечательное средство для бд. Explain он вам покажет что и сколько занимает в запросе.

Id_sub однозначно индексировать и будет вам счастье
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скорость выполнения функции Arsenx777 PHP 1 22.04.2012 19:16
Скорость выполнения скрипта Arsenx777 PHP 2 08.04.2012 10:09
Скорость выполнения операций crawter C# (си шарп) 6 12.03.2012 19:57
Скорость выполнения программы avd Общие вопросы Delphi 3 29.10.2010 17:44
Проблемма: Программное отключение "защиты формы" влияет на скорость выполнения программного кода... StrikeR33 Microsoft Office Word 0 28.05.2008 20:11