Like SQL-based databases, you can create indices in Neo4j to optimize frequently performed searches. In my particular case, I am usually searching by the plant name. Adding an index on the plant’s name, therefore, makes sense:
CREATE INDEX index_tomato_name IF NOT EXISTS FOR (n:TOMATO) ON (n.name)
I am also interested in mapping the genetic lineage, so I’ve added indices for the male and female parent plants:
CREATE INDEX index_tomato_parentm IF NOT EXISTS for ()-[r:PARENT_M]-() on (r.name) CREATE INDEX index_tomato_parentf IF NOT EXISTS for ()-[r:PARENT_F]-() on (r.name)
Hypothetically, you can use the procedure CALL db.indexes(); to view all of the indices in a database, but SHOW PROCEDURES; shows me that procedure isn’t registered in the community edition.
╒═════════════════════════════════════════════════════════╤══════════════════════════════════════════════════════════════════════╤═══════╤═════════════╕ │name │description │mode │worksOnSystem│ ╞═════════════════════════════════════════════════════════╪══════════════════════════════════════════════════════════════════════╪═══════╪═════════════╡ │"db.awaitIndex" │"Wait for an index to come online (for example: CALL db.awaitIndex(\"M│"READ" │true │ │ │yIndex\", 300))." │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.awaitIndexes" │"Wait for all indexes to come online (for example: CALL db.awaitIndexe│"READ" │true │ │ │s(300))." │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.clearQueryCaches" │"Clears all query caches." │"DBMS" │true │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.createLabel" │"Create a label" │"WRITE"│false │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.createProperty" │"Create a Property" │"WRITE"│false │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.createRelationshipType" │"Create a RelationshipType" │"WRITE"│false │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.index.fulltext.awaitEventuallyConsistentIndexRefresh"│"Wait for the updates from recently committed transactions to be appli│"READ" │true │ │ │ed to any eventually-consistent full-text indexes." │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.index.fulltext.listAvailableAnalyzers" │"List the available analyzers that the full-text indexes can be config│"READ" │true │ │ │ured with." │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.index.fulltext.queryNodes" │"Query the given full-text index. Returns the matching nodes, and thei│"READ" │true │ │ │r Lucene query score, ordered by score. Valid keys for the options map│ │ │ │ │ are: 'skip' to skip the top N results; 'limit' to limit the number of│ │ │ │ │ results returned; 'analyzer' to use the specified analyzer as search │ │ │ │ │analyzer for this query." │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.index.fulltext.queryRelationships" │"Query the given full-text index. Returns the matching relationships, │"READ" │true │ │ │and their Lucene query score, ordered by score. Valid keys for the opt│ │ │ │ │ions map are: 'skip' to skip the top N results; 'limit' to limit the n│ │ │ │ │umber of results returned; 'analyzer' to use the specified analyzer as│ │ │ │ │ search analyzer for this query." │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.info" │"Provides information regarding the database." │"READ" │true │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.labels" │"List all available labels in the database." │"READ" │true │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.ping" │"This procedure can be used by client side tooling to test whether the│"READ" │true │ │ │y are correctly connected to a database. The procedure is available in│ │ │ │ │ all databases and always returns true. A faulty connection can be det│ │ │ │ │ected by not being able to call this procedure." │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.prepareForReplanning" │"Triggers an index resample and waits for it to complete, and after th│"READ" │true │ │ │at clears query caches. After this procedure has finished queries will│ │ │ │ │ be planned using the latest database statistics." │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.propertyKeys" │"List all property keys in the database." │"READ" │true │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.relationshipTypes" │"List all available relationship types in the database." │"READ" │true │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.resampleIndex" │"Schedule resampling of an index (for example: CALL db.resampleIndex(\│"READ" │true │ │ │"MyIndex\"))." │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.resampleOutdatedIndexes" │"Schedule resampling of all outdated indexes." │"READ" │true │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.schema.nodeTypeProperties" │"Show the derived property schema of the nodes in tabular form." │"READ" │true │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.schema.relTypeProperties" │"Show the derived property schema of the relationships in tabular form│"READ" │true │ │ │." │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.schema.visualization" │"Visualizes the schema of the data based on available statistics. A ne│"READ" │true │ │ │w node is returned for each label. The properties represented on the n│ │ │ │ │ode include: `name` (label name), `indexes` (list of indexes), and `co│ │ │ │ │nstraints` (list of constraints). A relationship of a given type is re│ │ │ │ │turned for all possible combinations of start and end nodes. The prope│ │ │ │ │rties represented on the relationship include: `name` (type name). Not│ │ │ │ │e that this may include additional relationships that do not exist in │ │ │ │ │the data due to the information available in the count store. " │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.stats.clear" │"Clear collected data of a given data section. Valid sections are 'QUE│"READ" │true │ │ │RIES'" │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.stats.collect" │"Start data collection of a given data section. Valid sections are 'QU│"READ" │true │ │ │ERIES'" │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.stats.retrieve" │"Retrieve statistical data about the current database. Valid sections │"READ" │true │ │ │are 'GRAPH COUNTS', 'TOKENS', 'QUERIES', 'META'" │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.stats.retrieveAllAnonymized" │"Retrieve all available statistical data about the current database, i│"READ" │true │ │ │n an anonymized form." │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.stats.status" │"Retrieve the status of all available collector daemons, for this data│"READ" │true │ │ │base." │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"db.stats.stop" │"Stop data collection of a given data section. Valid sections are 'QUE│"READ" │true │ │ │RIES'" │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"dbms.cluster.routing.getRoutingTable" │"Returns the advertised bolt capable endpoints for a given database, d│"DBMS" │true │ │ │ivided by each endpoint's capabilities. For example an endpoint may se│ │ │ │ │rve read queries, write queries and/or future getRoutingTable requests│ │ │ │ │." │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"dbms.components" │"List DBMS components and their versions." │"DBMS" │true │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"dbms.info" │"Provides information regarding the DBMS." │"DBMS" │true │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"dbms.killConnection" │"Kill network connection with the given connection id." │"DBMS" │true │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"dbms.killConnections" │"Kill all network connections with the given connection ids." │"DBMS" │true │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"dbms.listCapabilities" │"List capabilities" │"DBMS" │true │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"dbms.listConfig" │"List the currently active config of Neo4j." │"DBMS" │true │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"dbms.listConnections" │"List all accepted network connections at this instance that are visib│"DBMS" │true │ │ │le to the user." │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"dbms.queryJmx" │"Query JMX management data by domain and name. For instance, \"*:*\"" │"DBMS" │true │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"dbms.routing.getRoutingTable" │"Returns the advertised bolt capable endpoints for a given database, d│"DBMS" │true │ │ │ivided by each endpoint's capabilities. For example an endpoint may se│ │ │ │ │rve read queries, write queries and/or future getRoutingTable requests│ │ │ │ │." │ │ │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"dbms.upgrade" │"Upgrade the system database schema if it is not the current schema." │"WRITE"│true │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"dbms.upgradeStatus" │"Report the current status of the system database sub-graph schema." │"READ" │true │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"tx.getMetaData" │"Provides attached transaction metadata." │"DBMS" │true │ ├─────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────┼───────┼─────────────┤ │"tx.setMetaData" │"Attaches a map of data to the transaction. The data will be printed w│"DBMS" │false │ │ │hen listing queries, and inserted into the query log." │ │ │ └─────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────┴