Mercurial > hgrepos > hgweb.cgi > s4
changeset 568:3cb5c360e1bf
Try to speed up user-home summary construction.
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Mon, 22 Apr 2019 12:03:16 +0900 |
parents | 5b911fee7e1b |
children | 81b5ec847687 |
files | s4-funcs.sh |
diffstat | 1 files changed, 36 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/s4-funcs.sh Mon Apr 22 12:02:33 2019 +0900 +++ b/s4-funcs.sh Mon Apr 22 12:03:16 2019 +0900 @@ -381,7 +381,8 @@ # We want to use piped function to put querylog, but we use # simple redirection for the sake of speed. query() { - echo ".once $sqo" >&5 + # echo ".once $sqo" >&5 + echo ".output $sqo" >&5 logstart if [ -z "$1" ]; then tee -a $querylog @@ -389,6 +390,7 @@ echo "$@" >> $querylog echo "$@" fi >&5 + echo ".output stdout" >&5 cat $sqo logend } @@ -1876,7 +1878,12 @@ fi nblog=`query "SELECT count(id) FROM blog_s WHERE key='owner' AND \ val='$uname';"` + ## REMOVE This comment block until 2019/7/1 + ## err "----- `gdate +%FT%T.%3N` ------------C" + ## [ x"$user" = x'yuuji@gentei.org' ] && ddd=1 listblog $uname > $bf + ## unset ddd + ## err "----- `gdate +%FT%T.%3N` ------------D" hometail=$tmpd/tail.$$ mkfifo $hometail @@ -3131,6 +3138,7 @@ fi sqlfile=$tmpd/dump.sql : > $sqlfile # ensure to be empty + printf '.mode html\n.header 1\n' > $sqlfile # $DT_CHLD=ChildTable:BindColumn if [ -n "$DT_CHLD" ]; then _t=${DT_CHLD%:*} _i=${DT_CHLD#*:} @@ -3142,6 +3150,7 @@ # Speed up counting of new articles cat<<-EOF >> $sqlfile -- presql2 + DROP TABLE IF EXISTS _counts; CREATE TEMPORARY TABLE _counts AS SELECT $_i, count($_i) cnt FROM $_t GROUP BY $_i; @@ -3152,14 +3161,20 @@ ON b.id=s.id AND s.key='owner' ${DT_QOWNER:+ AND s.val=$DT_QOWNER}; + DROP TABLE IF EXISTS _children; CREATE TEMPORARY TABLE _children AS SELECT a.trowid trowid, $_i, a.id, s.val ctime FROM (SELECT t.trowid, t.id $_i, a.id FROM _target t LEFT JOIN "$_t" a ON t.id=a.$_i) a LEFT JOIN ${_t}_s s ON a.id=s.id AND s.key='ctime'; - CREATE TEMPORARY TABLE _news($_i, newcnt); - INSERT INTO _news + -- ${ddd:+.system gdate +%T.%3N >> tmp/d1} + DROP TABLE IF EXISTS _news; + + -- CREATE TEMPORARY TABLE _news($_i, newcnt); + -- INSERT INTO _news + /* **COMPARE** the efficiency of TEMP-TABLE and VIEW !!! */ + CREATE VIEW _news AS ( SELECT a.id, coalesce(newcnt, 0) newcnt FROM (SELECT DISTINCT id FROM _target) a LEFT JOIN @@ -3169,7 +3184,8 @@ WHERE tblrowid=x.trowid), '1970-01-01') GROUP BY $_i) b - ON a.id=b.$_i; + ON a.id=b.$_i); + -- ${ddd:+.system gdate +%T.%3N >> tmp/d1} EOF # REMOVE next line until 2019/5/1 cntall="(select count($_i) from $_t where $_i=a.id)" @@ -3232,15 +3248,30 @@ *** SQL-file: $sqlfile *** `cat $sqlfile` EOF + if [ "$ddd" ]; then # REMOVE this block until 2019/7/1 + rm -f tmp/sql; cat $sqlfile >> tmp/sql + err "----- `gdate +%FT%T.%3N` ------------555555aaaaa" + # query ".read $sqlfile" > $tmpd/foo + sqlite3 -header -cmd 'pragma foreign_keys=ON' $db ".read $sqlfile" > $tmpd/foo + cp $tmpd/foo tmp/ + err "----- `gdate +%FT%T.%3N` ------------555555" + ## $ddd LINE exists at the end of this function + fi + printf '.mode list\n.header 0\n' >> $sqlfile cat<<EOF | sed "s,\(<TR><TD>\)\([1-9][0-9]*\)\(#[0-9a-fxs]*\)*</TD>,\1$elink$dvlink</TD>," | dt_rowhack <div> <!-- for folding by check button (s4-funcs.sh:dumptable()) --> <div class="dumptable"> <table class="b$dt_class"> -`sq -header -cmd ".mode $1" $db ".read $sqlfile"` +`query ".read $sqlfile"` </table> </div> <!-- dumptable --> </div> <!-- for folding by check button (s4-funcs.sh:dumptable()) --> EOF +### `query ".read $sqlfile"` +### `sq -header -cmd ".mode $1" $db ".read $sqlfile"` + + ## REMOVE THIS! + [ "$ddd" ] && err "----- `gdate +%FT%T.%3N` ------------666666" } par2table() (