Skip to content

Commit f320214

Browse files
andrehankeandrehanke
andrehanke
authored and
andrehanke
committed
refat: removidas referências extras, aliases, joins desnecessário e adicionado noholdlock
1 parent ffd9d2c commit f320214

File tree

1 file changed

+24
-47
lines changed

1 file changed

+24
-47
lines changed

src/Database/Connection.php

+24-47
Original file line numberDiff line numberDiff line change
@@ -264,55 +264,32 @@ private function queryString($tables)
264264
// Has domain.table
265265
if (isset($explicitDB[1])) {
266266
return <<<SQL
267-
SELECT
268-
a.name,
269-
st.name AS type
270-
FROM
271-
{$explicitDB[0]}..syscolumns a,
272-
{$explicitDB[0]}..systypes b,
273-
{$explicitDB[0]}..systypes s,
274-
{$explicitDB[0]}..systypes st
275-
WHERE
276-
a.usertype = b.usertype AND
277-
s.usertype = a.usertype AND
278-
s.type = st.type AND
279-
st.name NOT IN (
280-
'timestamp',
281-
'sysname',
282-
'longsysname',
283-
'nchar',
284-
'nvarchar'
285-
) AND
286-
st.usertype < 100 AND
287-
object_name (
288-
a.id,
289-
db_id ('{$explicitDB[0]}')
290-
) = '{$explicitDB[1]}'
291-
SQL;
267+
SELECT
268+
syscolumns.name,
269+
systypes.name AS type
270+
FROM
271+
{$explicitDB[0]}..syscolumns noholdlock
272+
JOIN
273+
{$explicitDB[0]}..systypes noholdlock ON systypes.usertype = syscolumns.usertype
274+
WHERE
275+
systypes.name NOT IN ('timestamp', 'sysname', 'longsysname', 'nchar', 'nvarchar')
276+
AND systypes.usertype < 100
277+
AND object_name(syscolumns.id, db_id('{$explicitDB[0]}')) = '{$explicitDB[1]}'
278+
SQL;
292279
} else {
293280
return <<<SQL
294-
SELECT
295-
a.name,
296-
st.name AS type
297-
FROM
298-
syscolumns a,
299-
systypes b,
300-
systypes s,
301-
systypes st
302-
WHERE
303-
a.usertype = b.usertype AND
304-
s.usertype = a.usertype AND
305-
s.type = st.type AND
306-
st.name NOT IN (
307-
'timestamp',
308-
'sysname',
309-
'longsysname',
310-
'nchar',
311-
'nvarchar'
312-
) AND
313-
st.usertype < 100 AND
314-
object_name (a.id) = '{$tables}'
315-
SQL;
281+
SELECT
282+
syscolumns.name,
283+
systypes.name AS type
284+
FROM
285+
syscolumns
286+
JOIN
287+
systypes ON systypes.usertype = syscolumns.usertype
288+
WHERE
289+
systypes.name NOT IN ('timestamp', 'sysname', 'longsysname', 'nchar', 'nvarchar')
290+
AND systypes.usertype < 100
291+
AND object_name(syscolumns.id) = '{$tables}'
292+
SQL;
316293
}
317294
}
318295

0 commit comments

Comments
 (0)