From a9808b3db993267f72b4594fe86fad49fec50e91 Mon Sep 17 00:00:00 2001 From: Domas Mituzas Date: Sun, 6 May 2007 22:18:17 +0000 Subject: [PATCH] Avoid using IN (..) syntax if just single value is being fetched. --- includes/LinkBatch.php | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/includes/LinkBatch.php b/includes/LinkBatch.php index 065c540a0b..249a8ec9ce 100644 --- a/includes/LinkBatch.php +++ b/includes/LinkBatch.php @@ -3,7 +3,7 @@ /** * Class representing a list of titles * The execute() method checks them all for existence and adds them to a LinkCache object - + + * * @addtogroup Cache */ class LinkBatch { @@ -156,19 +156,26 @@ class LinkBatch { } else { $sql .= ' OR '; } - $sql .= "({$prefix}_namespace=$ns AND {$prefix}_title IN ("; - - $firstTitle = true; - foreach( $dbkeys as $dbkey => $unused ) { - if ( $firstTitle ) { - $firstTitle = false; - } else { - $sql .= ','; + + if (count($dbkeys)==1) { // avoid multiple-reference syntax if simple equality can be used + + $sql .= "({$prefix}_namespace=$ns AND {$prefix}_title=". + $db->addQuotes(current(array_keys($dbkeys))). + ")"; + } else { + $sql .= "({$prefix}_namespace=$ns AND {$prefix}_title IN ("; + + $firstTitle = true; + foreach( $dbkeys as $dbkey => $unused ) { + if ( $firstTitle ) { + $firstTitle = false; + } else { + $sql .= ','; + } + $sql .= $db->addQuotes( $dbkey ); } - $sql .= $db->addQuotes( $dbkey ); + $sql .= '))'; } - - $sql .= '))'; } if ( $first && $firstTitle ) { # No titles added -- 2.20.1