Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Есть разница в скорости поиска через предсталвение и таблицу? / 15 сообщений из 15, страница 1 из 1
19.03.2014, 12:49:47
    #38590442
DeeZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть разница в скорости поиска через предсталвение и таблицу?
Есть таблица, где время, ip и mac хранятся ввиде целых цисел. А так же есть представление, которое собирает и показывает это в понятном человеку виде


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CREATE  TABLE `ArpCollector` (
  `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `recdate` INT UNSIGNED NOT NULL ,
  `ip_address` INT UNSIGNED NOT NULL ,
  `mac_address` BIGINT UNSIGNED NOT NULL ,
  PRIMARY KEY (`id`) ,
  UNIQUE INDEX `id_UNIQUE` (`id` ASC) );

INSERT INTO `ArpCollector` (`recdate`, `ip_address`, `mac_address`, ) VALUES ('1394177701', INET_ATON('172.16.10.62'), CONV('abcdef21ca61',16,10));
INSERT INTO `ArpCollector` (`recdate`, `ip_address`, `mac_address`, ) VALUES ('1394177702', INET_ATON('172.16.10.64'), CONV('abc4efa1ca61',16,10));

VIEW `ArpView` AS
    select 
        FROM_UNIXTIME(`ArpCollector`.`recdate`) AS `recdate`,
        inet_ntoa(`ArpCollector`.`ip_address`) AS `ip`,         
        LPAD(conv(`ArpCollector`.`mac_address`, 10, 16),12,'0') AS `mac`,
    from
        `ArpCollector`



База достаточно огромная, и встает вопрос из сабжа: Есть разница в скорости поска через представление и непосредственно черещ таблицу? Какой из вариантов будет работать быстрее?
Сейчас проверить не могу т.к. данных пока ноль, но надо продолжать пистаь обработчик. Какой вариант предпочтительнее?

1. select * from ArpView where ip = '10.1.56.1';

2. select FROM_UNIXTIME(recdate), INET_NTOA(ip_address), CONV(mac_address,10,16) FROM ArpCollector where INET_NTOA(ip_address) = '62.165.56.1';

3. select * FROM ArpCollector where INET_NTOA(ip_address) = '10.1.56.1';
...
Рейтинг: 0 / 0
19.03.2014, 13:03:38
    #38590473
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть разница в скорости поиска через предсталвение и таблицу?
DeeZ,

я бы эти преобразования видов делал на клиенте, а не в базе.

А VIEW без острой необходимости использовать не советовал бы.
См. View Processing Algorithms
...
Рейтинг: 0 / 0
19.03.2014, 13:15:58
    #38590497
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть разница в скорости поиска через предсталвение и таблицу?
База достаточно огромная, и встает вопрос из сабжа: Есть разница в скорости поска через представление и непосредственно черещ таблицу?


Нет. В данном случае.

Какой из вариантов будет работать быстрее?

В данном случае без разницы.
...
Рейтинг: 0 / 0
19.03.2014, 13:21:03
    #38590505
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть разница в скорости поиска через предсталвение и таблицу?
MasterZivКакой из вариантов будет работать быстрее?

В данном случае без разницы.При чем не просто "без разницы", а одинаково плохо. Не будет использоваться индекс по полю ip_address.
...
Рейтинг: 0 / 0
19.03.2014, 13:21:33
    #38590507
DeeZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть разница в скорости поиска через предсталвение и таблицу?
MasterZivНет. В данном случае.

В данном случае? что то не так? или речь о данном случае с 2 строками в базе?


ЗЫЖ ip_address, mac_address - индексируются, просто не указал это
...
Рейтинг: 0 / 0
19.03.2014, 13:24:50
    #38590516
DeeZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть разница в скорости поиска через предсталвение и таблицу?
miksoftПри чем не просто "без разницы", а одинаково плохо. Не будет использоваться индекс по полю ip_address.
не очень понял. Если вы о том что индекса нет - я просто не указал. он есть
ALTER TABLE ArpCollector ADD INDEX `arp` (`ip_address` ASC, `mac_address` ASC, `int` ASC) ;

Или имено в моем запросе что то не так? если в запросе, подскажите что изменить?
...
Рейтинг: 0 / 0
19.03.2014, 13:30:39
    #38590529
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть разница в скорости поиска через предсталвение и таблицу?
DeeZmiksoftПри чем не просто "без разницы", а одинаково плохо. Не будет использоваться индекс по полю ip_address.
не очень понял. Если вы о том что индекса нет - я просто не указал. он есть
ALTER TABLE ArpCollector ADD INDEX `arp` (`ip_address` ASC, `mac_address` ASC, `int` ASC) ;

Или имено в моем запросе что то не так? если в запросе, подскажите что изменить?Вы это поле используете в качестве аргумента функции, так индекс использоваться не может.
Вынесите поле ip_address из функции.
Примерно так:
Код: sql
1.
WHERE ip_address=INET_ATON('172.16.10.62')
...
Рейтинг: 0 / 0
19.03.2014, 13:37:04
    #38590546
DeeZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть разница в скорости поиска через предсталвение и таблицу?
miksoftВы это поле используете в качестве аргумента функции, так индекс использоваться не может.
Спаисбо, ценное замечание :) изменю.
...
Рейтинг: 0 / 0
19.03.2014, 13:40:48
    #38590558
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть разница в скорости поиска через предсталвение и таблицу?
если сильно волнует быстодействие, я добавил еще одно поле bigint и хранил там ip в виде
aaa*1000 000 000 +bbb*1000 000+ccc*1000+ddd
и нагдядно и индексируется лучше чем текстовое
...
Рейтинг: 0 / 0
19.03.2014, 13:44:05
    #38590563
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть разница в скорости поиска через предсталвение и таблицу?
вадяиндексируется лучше чем текстовоеС чего бы?
Да и если хранить в числовом виде, то 4-х байтовый INT и компактнее, и больше операций позволят производить при необходимости.
...
Рейтинг: 0 / 0
19.03.2014, 13:47:27
    #38590572
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть разница в скорости поиска через предсталвение и таблицу?
вадяесли сильно волнует быстодействие, я добавил еще одно поле bigint и хранил там ip в виде
aaa*1000 000 000 +bbb*1000 000+ccc*1000+ddd
и нагдядно и индексируется лучше чем текстовоеизвините, а нахрена, если у вас уже есть поле с целочисленным представлением айпи?
...
Рейтинг: 0 / 0
19.03.2014, 14:40:46
    #38590667
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть разница в скорости поиска через предсталвение и таблицу?
DeeZMasterZivНет. В данном случае.

В данном случае? что то не так? или речь о данном случае с 2 строками в базе?


ЗЫЖ ip_address, mac_address - индексируются, просто не указал это

Я не знаю, что ты спрашиваешь.

Ещё раз --
Вопрос:
"Есть разница в скорости поска через представление и непосредственно через таблицу"
Ответ:
"Нет".
...
Рейтинг: 0 / 0
19.03.2014, 14:41:58
    #38590669
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть разница в скорости поиска через предсталвение и таблицу?
вадяесли сильно волнует быстодействие, я добавил еще одно поле bigint и хранил там ip в виде
aaa*1000 000 000 +bbb*1000 000+ccc*1000+ddd
и нагдядно и индексируется лучше чем текстовое

А почему бы не хранить IP адрес как есть, в виде числа ? IPадрес -- это 4байтное число.
...
Рейтинг: 0 / 0
19.03.2014, 14:43:19
    #38590672
DeeZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть разница в скорости поиска через предсталвение и таблицу?
ок, переделываю view так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
VIEW `ArpView` AS
    select 
        ip_address,
        mac_address,
        FROM_UNIXTIME(`ArpCollector`.`recdate`) AS `recdate`,
        inet_ntoa(`ArpCollector`.`ip_address`) AS `ip`,         
        LPAD(conv(`ArpCollector`.`mac_address`, 10, 16),12,'0') AS `mac`,
    from
        `ArpCollector`



И с учетом рекомендация, будет ли разница в скорости обработки?

1. select recdate,ip,mac from ArpView where ip_address = INET_ATON('10.1.56.1');

2. select FROM_UNIXTIME(recdate), INET_NTOA(ip_address), CONV(mac_address,10,16)
FROM ArpCollector where ip_address = INET_ATON('10.1.56.1');

3. select *
FROM ArpCollector where ip_address = INET_ATON('10.1.56.1');
...
Рейтинг: 0 / 0
19.03.2014, 14:43:26
    #38590673
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть разница в скорости поиска через предсталвение и таблицу?
MasterZivЕщё раз --
Вопрос:
"Есть разница в скорости поска через представление и непосредственно через таблицу"
Ответ:
"Нет".Не совсем так. В общем случае VIEW либо одинаковы, либо медленнее, чем прямой запрос.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Есть разница в скорости поиска через предсталвение и таблицу? / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]