【发布时间】:2013-11-21 12:47:14
【问题描述】:
首先,如果这里不是这类问题的地方,请告诉我,我会删除它。
好的,所以我有一个 MySQL PHP 查询翻译类,可以在其他数据库中翻译为 MSSQL。以下测试文件产生以下结果(启用调试)
Test_File.php
include 'session_handler.php';
include 'database_connection.php';
$result = $db->query("SELECT * FROM industries LIMIT 5");
MySQL 结果:
Query time was 0.00622892379761 seconds for:
SELECT * FROM industries LIMIT 5
Query time was 0.000350952148438 seconds for:
SELECT "session_id" FROM "sessions" WHERE "session_id" = '58'
Query time was 0.000293016433716 seconds for:
UPDATE "sessions" SET "value" = 'x', "expiration" = '0' WHERE "session_id" = '58'
Total query time: 0.00848698616028 seconds
MSSQL 结果
Query time was 0.21740579605103 seconds for:
SELECT
c.table_schema AS "schema",
c.table_name AS "table",
c.column_name AS "column",
c.data_type AS "type"
FROM
INFORMATION_SCHEMA.COLUMNS AS c
WHERE
(c.data_type = 'nvarchar' OR
c.data_type = 'ntext' OR
c.data_type = 'nchar') AND
c.table_catalog = DB_NAME()
ORDER BY
lower(c.table_name) ASC,
lower(c.column_name) ASC
Query time was 0.21066212654114 seconds for:
SELECT TOP 5 *, CAST("industries"."industry" AS VARBINARY(MAX)) AS fmssqln__industry FROM industries
Query time was 0.21116590499878 seconds for:
SELECT "session_id" FROM "sessions" WHERE "session_id" = '58'
Query time was 0.21582698822021 seconds for:
UPDATE "sessions" SET "value" = x, "expiration" = '0' WHERE "session_id" = '58'
Total query time: 1.7053256034851 seconds
如您所见,MySQL 查询非常快,而转换后的查询(由类转换)大约需要 2 秒。
我对 MSSQL 的语法一无所知,所以我不确定转换后的查询是否尽可能优化?
所以我的问题是 - 转换后的 MSSQL 查询是否是 MySQL 查询的正确翻译,我应该从哪里开始解决速度问题?
其他信息: MSSQL 和 MySQL 数据库和表在内容和架构方面是相同的。
谢谢
【问题讨论】:
-
MSSQL 中的 session_id 是索引还是主键?尝试在 QA 中运行此查询。
-
您需要在 MS 提供的一些查询工具中测试该查询。可能是 PHP MSSQL 客户端滞后。
-
啊好吧...我能做到。
标签: php mysql sql-server