diff --git a/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/system/DatasetGraphStorage.java b/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/system/DatasetGraphStorage.java
index 555d38a..ada0717 100644
--- a/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/system/DatasetGraphStorage.java
+++ b/jena-db/jena-dboe-storage/src/main/java/org/apache/jena/dboe/storage/system/DatasetGraphStorage.java
@@ -81,6 +81,10 @@
     @Override public StoragePrefixes getPrefixes()    { return prefixes; }
     @Override public Transactional getTransactional() { return txn; }
 
+    /**
+     * Provide a general implementation of "listGraphNodes". Implementations may wish
+     * to override and do this operation in a more efficient manner.
+     */
     @Override
     public Iterator<Node> listGraphNodes() {
         Iterator<Quad> iter = findNG(null, null, null, null);
diff --git a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/DatasetGraphTDB.java b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/DatasetGraphTDB.java
index ce05524..5ba2771 100644
--- a/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/DatasetGraphTDB.java
+++ b/jena-db/jena-tdb2/src/main/java/org/apache/jena/tdb2/store/DatasetGraphTDB.java
@@ -18,6 +18,10 @@
 
 package org.apache.jena.tdb2.store;
 
+import java.util.Iterator;
+
+import org.apache.jena.atlas.iterator.Iter;
+import org.apache.jena.atlas.lib.tuple.Tuple;
 import org.apache.jena.dboe.base.file.Location;
 import org.apache.jena.dboe.storage.StoragePrefixes;
 import org.apache.jena.dboe.storage.system.DatasetGraphStorage;
@@ -27,6 +31,7 @@
 import org.apache.jena.sparql.core.Quad;
 import org.apache.jena.sparql.engine.optimizer.reorder.ReorderTransformation;
 import org.apache.jena.tdb2.TDBException;
+import org.apache.jena.tdb2.lib.NodeLib;
 import org.apache.jena.tdb2.params.StoreParams;
 import org.apache.jena.tdb2.store.nodetupletable.NodeTupleTable;
 
@@ -127,6 +132,18 @@
         return GraphTDB.tdb_createUnionGraph(this, getPrefixes());
     }
 
+    @Override
+    public Iterator<Node> listGraphNodes() {
+        checkNotClosed();
+        NodeTupleTable quads = getQuadTable().getNodeTupleTable();
+        Iterator<Tuple<NodeId>> x = quads.findAll();
+        // XXX Future: Ensure we scan a G??? index and use distinctAdjacent.
+        // See TupleTable.chooseScanAllIndex
+        Iterator<NodeId> z = Iter.iter(x).map(t -> t.get(0)).distinct();
+        Iterator<Node> r = NodeLib.nodes(quads.getNodeTable(), z);
+        return r;
+    }
+
     public NodeTupleTable chooseNodeTupleTable(Node graphNode) {
         checkNotClosed();
         if ( graphNode == null || Quad.isDefaultGraph(graphNode) )
