Pagina 2 di 5 primaprima 1 2 3 4 ... ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 50
  1. #11
    beh però indicizzando mi sembra meglio, farò un po' di prove
    Se non sono ancora impazzito è merito Vostro e di questo forum.
    Non vorrei essere nei panni della Marcuzzi, se dentro non c'è la Marcuzzi.

  2. #12
    Originariamente inviato da paolo bosani
    Studia anche te vah, così dopo mi dai una mano
    Leggi questo
    Normalizzazione dei database... mmmhhh... hai mai fatto Data Warehouse? Data Mining? Cubi? Report?

  3. #13
    Utente di HTML.it L'avatar di kava01
    Registrato dal
    Jul 2006
    Messaggi
    116
    Originariamente inviato da paolo bosani
    beh però indicizzando mi sembra meglio, farò un po' di prove
    Gli indici appesantiscono il db ma migliorano sicuramente le prestazioni, cerca comunque, nei limiti del possibile anche di normalizzare il db evitando quindi di fare ricerche su campi di testo che sono magari ripetuti più volte, ma ricercando per id

  4. #14
    Originariamente inviato da Mems
    Normalizzazione dei database... mmmhhh... hai mai fatto Data Warehouse? Data Mining? Cubi? Report?
    No, spiegami o dammi qualche link/tutorial.
    Se non sono ancora impazzito è merito Vostro e di questo forum.
    Non vorrei essere nei panni della Marcuzzi, se dentro non c'è la Marcuzzi.

  5. #15
    Originariamente inviato da kava01
    Gli indici appesantiscono il db ma migliorano sicuramente le prestazioni, cerca comunque, nei limiti del possibile anche di normalizzare il db evitando quindi di fare ricerche su campi di testo che sono magari ripetuti più volte, ma ricercando per id
    Boh,
    da quello che ho letto in giro per forum, penso il DB sia normalizzato.
    Non ho capito cosa intendi di ricerca per id?
    Se io ho un form di ricerca e devo cercare una parola (ad esempio "lavoro") in una tabella News, come faccio a ricercarla per id? Devo cercare la parola all'interno dei contenuti che normalmente ho impostato come MEDIUMTEXT.
    Come INDICI ho impostato il campo KEYWORD e TITOLO.
    Come Query di ricerca ho provato a farla eseguire solo su TITOLO, solo su KEYWORD, solo su CONTENUTO oltre ad aver provato a cercare in tutti e tre i campi.
    Mediamente il tempo di ricerca è di 22 secondi (considerando 398 record) e addirittura 29 secondi su 523 record.
    Se non sono ancora impazzito è merito Vostro e di questo forum.
    Non vorrei essere nei panni della Marcuzzi, se dentro non c'è la Marcuzzi.

  6. #16
    poi volevo aggiungere che lo script di ricerca su DB Access, è abbastanza veloce: circa 12 secondi per effettuare la ricerca in 7 tabelle e in diversi campi, di solito in 3 - 4 campi per ogni tabella.
    Mentre in MySql se dovessi eseguire la ricerca come sopra mi va in timeout.
    Se non sono ancora impazzito è merito Vostro e di questo forum.
    Non vorrei essere nei panni della Marcuzzi, se dentro non c'è la Marcuzzi.

  7. #17
    Se vuoi una mano devi darci qualche informazione in più.

    20 secondi per una query sono una cosa assurda, secondo me c'è qualcosa che non va
    nella sinstassi sql che usi (a meno che non fai una ricerca tipo LIKE su un campo memo dove hai salvato la divina commedia...).

    Prova a postare la tua query di ricerca e magari vediamo se si può migliorare qualcosa.
    Visual Basic e Dintorni
    Blog sullo sviluppo Web in generale

  8. #18
    Originariamente inviato da simo
    Se vuoi una mano devi darci qualche informazione in più.

    20 secondi per una query sono una cosa assurda, secondo me c'è qualcosa che non va
    nella sinstassi sql che usi (a meno che non fai una ricerca tipo LIKE su un campo memo dove hai salvato la divina commedia...).

    Prova a postare la tua query di ricerca e magari vediamo se si può migliorare qualcosa.
    Forse è anche la macchina che fa da server ad essere poco performante...

  9. #19
    Potrebbe essere ma.... 20 secondi per 500 record?

    Fai prima ad aprire la tabella e cercare il record a mano.
    Visual Basic e Dintorni
    Blog sullo sviluppo Web in generale

  10. #20
    Originariamente inviato da simo
    Se vuoi una mano devi darci qualche informazione in più.

    20 secondi per una query sono una cosa assurda, secondo me c'è qualcosa che non va
    nella sinstassi sql che usi (a meno che non fai una ricerca tipo LIKE su un campo memo dove hai salvato la divina commedia...).

    Prova a postare la tua query di ricerca e magari vediamo se si può migliorare qualcosa.
    Questa è la query, che in Access funziona bene, ma in MySql va in timeout:
    codice:
    <% Sub ricerca(testo,page)
    	if page=0 then page=1
    	set result_table=create_result_table(testo)
    	if not result_table.eof then
    		result_table.pagesize=10
    		result_table.AbsolutePage=page
    		response.write "<h2>  <a name=""Risultati"" title=""Risultati""></a>RISULTATI RICERCA</h2>"
    		for lcount=1 to result_table.pagesize
    			response.write "<div class=""riga" & iif(lcount mod 2=0,2,1) &""">" & vbcrlf
    			response.write "<h4>" & result_table("title") & "
    </h4>" & vbcrlf
    			response.write 	"
    
    " & result_table("content") & "</p>" & vbcrlf & "</div>" & vbcrlf
    			response.write "<div class=""nofloat""></div>"
    			result_table.movenext
    			if result_table.eof then exit for
    		next
    		response.write ("</div><div id=""navPagine"">")
    		if result_table.pagecount>1 then
    				response.write "["
    				if page>2 then response.write "[img][/img] |"
    				if page>1 then response.write "[img][/img] |"
    				if result_table.PageCount > 2 then
    					if page-2 < 1 then da_pag = 1 else da_pag = page-2
    					if page+2 > result_table.pagecount then fino_a_pag = result_table.pagecount else fino_a_pag = page+2
    				else
    					da_pag = 1
    					fino_a_pag = result_table.PageCount
    				end if
    				for i = da_pag to fino_a_pag
    					if i = page then
    						response.write i & " "
    					else	
    						response.write "|" & i & "  |"
    					end if	
    				next
    				if page+1<result_table.pagecount then response.write "[img][/img] |"
    				if page+1<result_table.pagecount then response.write "[img][/img]"
    				response.write"] Pagina " & page & " di " & result_table.pagecount & ""
    		end if
    	else
    		response.write "<h2>Nessun Risultato</h2>" & vbcrlf
    	end if
    end sub
    %>
    <%
    function create_result_table(byval testo)
    	set rsMenu = server.CreateObject("ADODB.recordset")
    	set rsResult = server.CreateObject("ADODB.recordset")
    	set rsSearch = server.CreateObject("ADODB.recordset")
    	rsResult.fields.append "title",203,65536
    	rsResult.fields.append "content",203,65536
    	rsResult.fields.append "order",19,4
    	rsResult.fields.append "link",203,65536
    	rsResult.open
    	rsMenu.activeConnection= strConn
    	rsMenu.source ="SELECT * FROM configuration WHERE use_in_search=-1"
    	RsMenu.CursorType = 3
    	RsMenu.CursorLocation = 2
    	RsMenu.LockType = 1
    	rsMenu.open
    	testo=generate_pattern(testo) 
    	do until rsMenu.eof
    			field_id=Primarykey_name(rsMenu("tabella"))
    			rsSearch.activeConnection= strConn
    			rsSearch.source="SELECT * FROM " & rsMenu("tabella") & iif(rsMenu("search_exclude")<>"", " WHERE " & rsMenu("search_exclude"),"")
    			RsSearch.CursorType = 3
    			RsSearch.CursorLocation = 2
    			RsSearch.LockType = 1
    			rsSearch.open
    			field_search testo,rsSearch,rsResult,rsMenu("search_fields"),rsMenu("idTable"),Field_id,rsMenu("search_format_title"),rsMenu("format_link")
    			rsSearch.close
    			rsMenu.movenext
    	loop
    	rsMenu.close
    	set rsMenu=nothing
    	rsResult.sort="order DESC"	
    	set create_result_table=rsResult
    end function
    
    function generate_pattern(byval formatString)
    	init = InStr(1, formatString, """")
        insert=""
    	Do until init=0
        	insert="|"
    		fine = InStr(init+1, formatString, """")
    		if generate_pattern<>"" then generate_pattern=generate_pattern & "|"
    		generate_pattern = generate_pattern & "("& Replace(Trim(Mid(formatString, init + 1, fine - init -1)), " ", "\s") & ")"
            formatString = rtrim(Left(formatString, init - 1)) & " " &  ltrim(Mid(formatString, fine + 1))
    		init = InStr(1, formatString, """")
        Loop
    	formatstring=trim(formatstring)
    	if formatString<>"" then generate_pattern=generate_pattern & insert & "("& Replace(formatString, " ", ")|(") & ")"
    end function
    
    
    Sub field_search(testo,rsSearch,rsResult,fields_list,idtable,field_id,format_title,format_link)
    	Set RegEx = New RegExp
    	do until rsSearch.eof
    		for each ccampo in rsSearch.fields
    			if instr(1,fields_list,ccampo.name,1)<>0 then
    				temp_text=HTMLtoPlain(ccampo.value)		
    				RegEx.Pattern = testo
    				RegEx.IgnoreCase = True
    				RegEx.Global = True
    				if regEx.test(temp_text)=true then
    					Set matches = RegEx.Execute(temp_text)
    					RetStr = matches(0).FirstIndex
    					If RetStr < 51 Then
    						lengh = InStr(200, temp_text, " ")-1
    						If lengh <= 0 Then lengh = len(temp_text)
    						text2use = Mid(temp_text, 1, lengh)
    					Else
    						start = InStr(RetStr-50, temp_text, " ")+1
    						lengh=instr(RetStr+150,temp_text," ")-start
    						If lengh<=0 Then lengh = len(temp_text)-start+1
    						text2use ="..." & Mid(temp_text, start, lengh)
    					End If
    					if len(text2use)<> len(temp_text) then text2use=text2use &"..."
    					Lastkey=""
    					For Each Key in matches
    					    If lcase(lastkey) <> lcase(key.value) Then
       					  		lastkey=key.value
    							RegEx.Pattern = Key.Value
    							text2use = RegEx.Replace(text2use, "" & Key.Value & "")
    						End If
    					Next
    					rsResult.addnew
    					rsResult("title")=formatcontent(rsSearch,format_title)
    					rsResult("link")=formatcontent(rsSearch,format_link)
    					rsResult("content")=text2use
    					rsResult("order")=rsSearch("visited")
    					rsResult.update
    					set matches=nothing
    					exit for
    				end if
    			end if
    		next
    		rsSearch.movenext
    	loop
    	set RegEx= nothing
    end sub
    %>
    Mentre nella pagina che genera i risultati c'è questa:
    codice:
    <%
    if request.QueryString("testo")<>"" then
    	ricerca  request.QueryString("testo"),request.QueryString("page")
    elseif request.QueryString("idtable")<>"" THEN
      response.Redirect 'Create_finally_link(request.QueryString("idtable"),request.QueryString("id"))
    end if
    %>
    Se non sono ancora impazzito è merito Vostro e di questo forum.
    Non vorrei essere nei panni della Marcuzzi, se dentro non c'è la Marcuzzi.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.