On-line: alex_II, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 1550
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.09.10 02:48. Заголовок: Подсчет кол-ва записей по полям.... на "лету"


Есть база с полями KCITY, KSTREET, HOUSE, и т.д. Кол-во записей порядка 3-5 тыс.
База проиндексирована:
1-индекс "KCITY"
2-индекс "KSTREET"
3-индекс "STR(KCITY)+STR(KSTREET)+UPPER(HOUSE)"
и т.д.

Как сделать БЫСТРЫЙ подсчет кол-ва записей на "лету" ?

Т.е. юзер выбирает город, высвечивается кол-во записей в БД по этому городу, далее
выбирает улицу по этому городу - высвечивается кол-во записей по этой улице и т.д.



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 15 [только новые]





Пост N: 52
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 11.09.10 08:50. Заголовок: Примерно так ordset..


Примерно так

ordsetfocus(tag) // "STR(KCITY)+STR(KSTREET)+UPPER(HOUSE)"
ordscope(0,str(KCITY))
ordscope(1,str(KCITY))
ordkeycount() // количество записей

для количества улиц
ordscope(0,str(KCITY)+STR(KSTREET))
ordscope(1,str(KCITY)+STR(KSTREET))
ordkeycount() // количество записей

и так далее.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1551
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.09.10 11:38. Заголовок: AlexMyr пишет: Alex..


AlexMyr пишет:

 цитата:
AlexMyr



Спасибо большое. Я по документации видел ordscope, но он у меня не заработал...

Интересно, а по скорости создание условного индекса быстрей будет ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 177
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 15.09.10 19:13. Заголовок: ordscope - давно пол..


ordscope - давно пользуюсь
условный индекс быстрее не будет- это создание
условный индекс использую для сложной выборки где можно и подождать

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1557
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.09.10 23:37. Заголовок: Vlad04 Спасибо бол..



 цитата:
Vlad04



Спасибо большое !
Остановился на условном индексе.
Дальше нужно выбирать по адресу список домов и корпусов.

А под ordscope переделываю другую часть программы, где долго идет подсчет кол-ва записей....


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1874
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 17.09.10 23:41. Заголовок: Andrey пишет: Остан..


Andrey пишет:

 цитата:
Остановился на условном индексе.


Ну и не верно ! Не правильный подход в данном контексте.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1558
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.09.10 11:47. Заголовок: Dima пишет: Ну и не..


Dima пишет:

 цитата:
Ну и не верно ! Не правильный подход в данном контексте.



Не понял ?
Мне нужно:
1) подсчитать кол-во записей.
2) создать список домов по этим записям (по выбранной улице). Далее создать список корпусов и подъездов по дому !

Условный индекс все равно приходиться строить !
Строиться он ОЧЕНЬ быстро... даже и не чувствуется в задача по сетке.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 55
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 20.09.10 09:38. Заголовок: Andrey пишет: Не по..


Andrey пишет:

 цитата:
Не понял ?



Уже есть индекс:
Andrey пишет:

 цитата:
3-индекс "STR(KCITY)+STR(KSTREET)+UPPER(HOUSE)"



по нему делается только ordscope и все что нужно
Andrey пишет:

 цитата:
Мне нужно:
1) подсчитать кол-во записей.
2) создать список домов по этим записям (по выбранной улице). Далее создать список корпусов и подъездов по дому !


этим ordscope и считается и создается список и тд, зачем условный индекс дополнительно?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1559
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.09.10 16:59. Заголовок: AlexMyr пишет: и со..


AlexMyr пишет:

 цитата:
и создается список и тд, зачем условный индекс дополнительно?



А как создать список ?
Не пользовался ни разу другими средствами !

Я делаю примерно так: Скрытый текст





Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 56
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 20.09.10 19:15. Заголовок: use your_table index..


use your_table
index on STR(KCITY)+STR(KSTREET)+UPPER(HOUSE) to file_index tag tt1
ordsetfocus("tt1")
ordscope(0,str(город1))
ordscope(1,str(город1))
dbgotop()
ordkeycount() // количество записей
dbedit() // тут список по конкретному городу или свой browse
// дальше клацаешь enter
ordscope(0,str(город1)+str(улица1))
ordscope(1,str(город1)+str(улица1))
dbgotop()
ordkeycount() // количество записей
dbedit() // тут список по конкретному городу плюс по улице

ну и так далее

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 57
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 20.09.10 19:21. Заголовок: по такому принципу у..


по такому принципу у меня работает многоуровневый справочник, номер уровня записывается в массив, а ordscope фильтрует записи и показывает через browse в hwgui. Все просто.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1560
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.09.10 00:58. Заголовок: AlexMyr Спасибо бо..


AlexMyr

Спасибо большое за методику !
Буду применять у себя в дальнейшем.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1689
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.02.11 00:08. Заголовок: AlexMyr пишет: use ..


AlexMyr пишет:

 цитата:
use your_table
index on STR(KCITY)+STR(KSTREET)+UPPER(HOUSE) to file_index tag tt1
ordsetfocus("tt1")
ordscope(0,str(город1))
ordscope(1,str(город1))
dbgotop()
ordkeycount() // количество записей
dbedit() // тут список по конкретному городу или свой browse
// дальше клацаешь enter
ordscope(0,str(город1)+str(улица1))
ordscope(1,str(город1)+str(улица1))
dbgotop()
ordkeycount() // количество записей
dbedit() // тут список по конкретному городу плюс по улице

ну и так далее



Переделал.
Появилась разница в кол-ве записей. Т.е. подсчитываются удаленные записи.
Как от них избавиться ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 78
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 25.02.11 11:34. Заголовок: index on STR(KCITY)+..


index on STR(KCITY)+STR(KSTREET)+UPPER(HOUSE) tag tt1 to file_index for !deleted()

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1690
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.02.11 11:47. Заголовок: Loach пишет: index ..


Loach пишет:

 цитата:
index on STR(KCITY)+STR(KSTREET)+UPPER(HOUSE) tag tt1 to file_index for !deleted()



Не хотелось бы это использовать....
А другие варианты есть ?



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 79
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 25.02.11 13:15. Заголовок: Andrey пишет: А дру..


Andrey пишет:

 цитата:
А другие варианты есть ?


К сожалению SET DELETED тут не срабатывает.

Ну, например как такой вариант:

index on iif(your_table->(deleted()),'1','0')+STR(KCITY)+STR(KSTREET)+UPPER(HOUSE) tag tt1 to file_index

и тогда соответственно

ordscope(0,"0"+str(город1))
ordscope(1,"0"+str(город1))


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 7
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет