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?
- try Reverse Engineering, was Coldfusion zu tun ist, wenn Sie cfqueryparam verwenden, aber den richtigen Datentyp angeben (Verwendung sp_prepexec?)
- 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
Wie haben Sie bestimmen Ihre Aussage darüber, wie Coldfusion den Parameter sendet? –
aus dieser Antwort - https://stackoverflow.com/questions/10802388/what-are-the-details-for-using-cf-sql-nvarchar-in-coldfusion-10/10848136#10848136 – jessieloo
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 " –