0

Ich bin eine Datenbank in Azure mit Coldfusion 2016. Verwendung Ich verwende Sqljdbc41.jar aus (hilfreichen Links, wie es zu konfigurieren: link1link2) Dies ist meine Frage. [Uuid] hat einen Index darauf und ist varchar (36) und pkIdentity ist ein Primärschlüssel int.cfqueryparam varchar Umwandlung in SQL Azure nvarchar

select pkIdentity 
from tbl1 
where [uuid] = <cfqueryparam cfsqltype="cf_sql_varchar" value="#attributes.uuid#" maxlength="36"> 

Diese Abfrage verbraucht die meisten DTUs in Azure. Coldfusion sendet es zu Azure als

(@P0 nvarchar(4000))select pkIdentity 
from tbl1 
where [uuid]= @P0 

ich gelesen habe, dass eine Einstellung auf dem JDBC-Treiber casting the varchar datatype as varchar sein kann, wenn es um Azure SQL vorbei. Ich habe jedoch nicht die Option im CF-Datenbank-Setup-Bildschirm, um die Konvertierung in nvarchar zu deaktivieren.

Ich denke, das sind meine Optionen. Was denkst du ist besser?

  1. try Reverse Engineering, was Coldfusion zu tun ist, wenn Sie cfqueryparam verwenden, aber den richtigen Datentyp angeben (Verwendung sp_prepexec?)
  2. entfernen Verwendung von cfqueryparam vollständig und bestätigen nur, dass Zeichenfolge bevor gültige UUID ist es schwer, Codierung in Abfrage (ex. wo [uuid] = '# attributes.uuid #'), aber ich fürchte, ich würde visibility verlieren alle Ausführungen dieser Abfrage zusammen innerhalb der Azure SQL Performance Insight-Tool
+0

Wie haben Sie bestimmen Ihre Aussage darüber, wie Coldfusion den Parameter sendet? –

+0

aus dieser Antwort - https://stackoverflow.com/questions/10802388/what-are-the-details-for-using-cf-sql-nvarchar-in-coldfusion-10/10848136#10848136 – jessieloo

+1

Glauben Sie, die Umwandlung zu Nvarchar verlangsamt die Abfrage? http://www.jochenhebrecht.be/site/2014-05-01/java/fixing-slow-queries-running-sql-server-using-jpa-hibernate-and-jtds 'jdbc: sqlserver: // localhost \ SQLEXPRESS; DatabaseName = TESTDB; sendStringParametersAsUnicode = false " –

Antwort

0

Vielen Dank an @ BernhardDöbler für comm Enthalten mit dem Parameter, den ich benötigte, um das Problem der Datenquelle zu korrigieren, die immer Parameter in Unicode umwandelt. Der Parameter, der zur JDBC-URL hinzugefügt werden muss, ist sendStringParametersAsUnicode = false (Ironischerweise habe ich ihn zuerst aus seinem Kommentar kopiert und dem Setup hinzugefügt, aber es funktionierte nicht, da einige seltsame Zeichen zwischen ein paar Buchstaben eingebettet waren.) Die Änderung des DTU-Verbrauchs ist jetzt deutlich niedriger! Siehe Screenshots unten. DTU consumption Performance Insight

Verwandte Themen