diff --git a/CRM/Core/DAO.php b/CRM/Core/DAO.php
index c6afeafc7a6d3bffc104b91b15d4c160e2d44174..871a3c1242f4c934acb865b9090d90d4481d270e 100644
--- a/CRM/Core/DAO.php
+++ b/CRM/Core/DAO.php
@@ -2401,7 +2401,6 @@ SELECT contact_id
     $refsFound = [];
     foreach (CRM_Core_DAO_AllCoreTables::getClasses() as $daoClassName) {
       $links = $daoClassName::getReferenceColumns();
-      $daoTableName = $daoClassName::getTableName();
 
       foreach ($links as $refSpec) {
         /** @var $refSpec CRM_Core_Reference_Interface */
diff --git a/CRM/Dedupe/MergeHandler.php b/CRM/Dedupe/MergeHandler.php
index 0bef4e3cc7525703b81063692e6138a748b65ceb..db454c0e70fc1a31aa2ad0e8a02f952b0dea5619 100644
--- a/CRM/Dedupe/MergeHandler.php
+++ b/CRM/Dedupe/MergeHandler.php
@@ -124,6 +124,13 @@ class CRM_Dedupe_MergeHandler {
     if (!isset(\Civi::$statics[__CLASS__]['dynamic'])) {
       \Civi::$statics[__CLASS__]['dynamic'] = [];
       foreach (CRM_Core_DAO::getDynamicReferencesToTable('civicrm_contact') as $tableName => $field) {
+        if ($tableName === 'civicrm_financial_item') {
+          // It turns out that civicrm_financial_item does not have an index on entity_table (only as the latter
+          // part of a entity_id/entity_table index which probably is not adding any value over & above entity_id
+          // only. This means this is a slow query. The correct fix is probably to add a whitelist to
+          // values for entity_table in the schema.
+          continue;
+        }
         $sql[] = "(SELECT '$tableName' as civicrm_table, '{$field[0]}' as field_name FROM $tableName WHERE entity_table = 'civicrm_contact' LIMIT 1)";
       }
       $sqlString = implode(' UNION ', $sql);