Every shot is a query
SOQL Striker
Pick the right SOQL filter to catch falling records. Balance bulk captures, query speed and governor limits before unhandled records reach production.
How to play
Records drop onto the board in batches. Choose the filter that catches the most cards before the round ends. By default, you have four filters and a ten-second round. The feedback after each pick explains the query plan and which filter would have caught more.
- Pick a filter: use the number keys 1–6 or tap a filter. Hover or focus a filter to highlight its fields on the board; each field has the same colour on the cards and in the filters.
- Earn points: each match scores points, three or more matches earn a bulk bonus, and the time left when the query returns earns a speed bonus.
- Choose a selective query: the game models an indexed equality filter as instant when it matches at most 30% of the whole wave table for a standard index, or 10% for a custom index. This uses the whole table, rather than only the visible cards. An
ORneeds every field indexed, each branch selective and the combined matches within the limit. AnANDcan use one selective indexed side. - Allow for scans: standalone
!=andNOTpredicates scan, as do filters without a qualifying index. Larger tables take longer to scan while the round clock keeps running. A scan that outlasts the clock captures nothing. - Use power-ups: five consecutive shots capturing at least four records earn a Custom Index drop. Capture it, then apply the index to an unindexed field. Capturing the once-per-run
Test.startTest()card resets the query counter and production buffer. - Commit or roll back: reach 100 on the query counter to COMMIT. If the production buffer reaches ten unhandled records first, the run rolls back. The buffer clears between waves and on the reset power-up.
- Pause or adjust: press P or use Pause. Settings lets you change the number of filters and round time; the clock pauses while it is open. From the result screen, press R or use Play Again to restart.
The board waits for Start, a key press or a tap before starting. Your scores and settings are saved in this browser.
Game rules and Salesforce: COMMIT at 100 queries, the ten-record buffer and scan timings are arcade rules. In Salesforce, exceeding a governor limit fails the transaction; it does not commit it. Test.startTest() provides a fresh limit context in Apex tests and cannot reset limits in production code.
Daily or practice: daily records use today's local-date challenge with four filters and ten-second rounds throughout. Changing either setting makes that run practice, even if you change it back. Restore defaults and restart to qualify again. A run crossing midnight cannot write the next day's daily records; restarting refreshes the default challenge date.