Anyone who’s loved and lived with a creature of another species – or two or three or many more—knows how different their realities are from our own. And yet, they share our space and time and are close as family, often more so. They pay attention to our ways of being. If we make an effort, we may come to know their realities, too.

It’s safe to say that relationships between humans and other animals are intrinsic to witchcraft. How and why that is so is the subject of A Witch’s Ally, a beautifully rendered book about ways of knowing –and being known by—non-human animals.

Author Dodie Graham McKay lives in Manitoba, Canada. She’s a green witch, a Gardnerian priestess, and a filmmaker. She authored an earlier book, Earth Magic, and she’s a contributor to Taurus Witch, one of the twelve volumes Ivo Dominguez, Jr.’s Witch’s Sun sign series.  

A Witch’s Ally is concise and packed with information and food for thought organized in three parts. In Part 1 McKay covers the history of witches’ magical relationships with the animal kingdom. This part includes material on the connections between animals and the Gods and Goddesses of various pantheons plus brief write-ups of how dozens of different animals have been treated in Greek, Roman, Egyptian, Welsh, Roman, Celtic, and Slavic spirituality. Part Two is about modern witchcraft and practices with non-human animals and the natural world generally, including unseen elements of nature and hidden realms. Part Three is a practicum for doing and making things to enhance one’s magical practice with animals and “to nurture and care for the creatures of the world.” The book begins with a tribute to McKay’s Oban the Wonderdog (2001-2017) whose life remains a guiding presence for her. The book ends with a chapter on how to say goodbye: how to grieve the loss of a companion animal while also gratefully celebrating their short lives.

A Witch’s Ally includes a lot of well-defined terminology. For starters, McKay distinguishes between pets, animal companions and animal familiars. “Pets and animal companions are the physical animals in our lives, and it is how we interact with them—and their magical aptitude—that makes them different.” A pet is a physically, living non-human animal who shares our home and part of our daily life. A pet is also an animal companion if “we share a type of uncanny psychic bond and the ability to communicate beyond usual animal-human relationships.”  An animal companion will “have a sense for magical work and actively seek out opportunities to share in our workings in a mutually beneficial way.” 

Animal familiars are something else. They are, “nonphysical animals that act as guides, informants, and protectors for us.” An animal familiar may appear in dreams, journeys, meditations or through channeled messages or divination.

McKay explicitly excludes from her typology the notion of a “spirit animal” because, though the term is a common one, “and it may sound innocent enough…the way this term has been used by modern, mostly white, practitioners of New Age and Pagan spiritualities has conflated it with the spiritual and religious practices of North American Indigenous peoples. This trivializes and generalizes the actual beliefs and practices of Indigenous peoples and the variety of belief systems practices by still-living cultures.” I am so glad McKay writes this. She notes that the use of the term “spirit animal” is often accompanied by caricatures of Indigenous people in “degrading, dehumanizing, and insulting situations.” Who needs it?

Instead, McKay delves into the many culture-respecting terms and concepts for animals who present themselves in spirit form. These include the medieval term “charge;” the concept of the “daemon” in Greek myth; the witch’s familiar; the “fetch; the Norse term “fylgia,” for an animal companion; the “genius loci” of Roman times; the mascot, totem, and tutelary. McKay wants people to stop using the term “familiar” for a critter who’s really just a witch’s pet. 

Words matter, and the term I find most useful in A Witch’s Way is one that was introduced in 1909 by a German biologist named Jakob Johann von Uexkull. Umwelt, translated from German as “environment,” describes an animal’s perceptual world. While all creatures share the same world on Earth, “each species has a different perspective of its reality, or umwelt, based on how it evolved to sense and experience it.” A canine umwelt, for example, includes smell as the primary sense for understanding the environment. Dogs need to sniff to stay happy and mentally stimulated. 

What’s key about the concept of umwelt is, as McKay writes, that “most creatures look at the world via the perspective of their own umwelten and leave it at that, humans included. What makes us different is that we humans also possess the capacity and opportunity to become aware of and respect the umwelten of other species.”  McKay writes that “knowing that the creatures around me can see, hear, smell, or feel things that are beyond my own capacity fills me with a sense of wonder and magic, reminding me of why I have devoted my life to witchcraft in the first place.”  Simply put, one widens one’s world by appreciating the umwelten of other types of beings. 

McKay includes a journey to discover the umwelt of another animal plus a host of other practices involving animal communication, divination, attracting and fostering a relationship with an animal familiar.

Why do these things? Why work with animals, in the mundane and spirit realms? McKay offers her “why’s” in the book’s conclusion. “When we practice witchcraft,” she writes, we crave contact and communion with the hidden realms, to travel beyond the limits of our physical bodies and have experiences that empower us to create effective change to our mundane reality… to do extraordinary things, we need extraordinary allies. The non-human beings that exist beside us could be those allies, but in order to create those relationships, we must not overlook them.”  

By incorporating non-human animals into one’s witchcraft, she concludes, we “affirm our connection to the natural world because we want to remember that there is magic—and we are a part of it.” 

~reviewed by Sara R. Diamond

Author: Dodie Graham McKay
Llewellyn Publications, 2024
208 pp., $18.99

32.533MBMemory Usage1.36sRequest Duration
Joomla! Version4.4.8
PHP Version8.3.21
Identityguest
Response200
Templatert_ambrosia
Database
Server
mysql
Version
10.6.22-MariaDB
Collation
latin1_swedish_ci
Conn Collation
utf8mb4_general_ci
$_GET
[]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:49 [ "USER" => "facingnorth" "HOME" => "/home/facingnorth" "SCRIPT_NAME" => "/index.php"...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1747583741 "last" => 1747583741...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:18 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (458.66KB) (5.02ms)
  • afterInitialise (809.8KB) (25.4ms)
  • afterRoute (544.31KB) (17.94ms)
  • beforeRenderComponent com_content (34.19KB) (1.73ms)
  • Before Access::preloadComponents (all components) (33.47KB) (1.14ms)
  • After Access::preloadComponents (all components) (107.34KB) (1.68ms)
  • Before Access::preloadPermissions (com_content) (1.57KB) (134μs)
  • After Access::preloadPermissions (com_content) (2MB) (14.17ms)
  • Before Access::getAssetRules (id:4203 name:com_content.article.3306) (66.65KB) (348μs)
  • After Access::getAssetRules (id:4203 name:com_content.article.3306) (8.72KB) (224μs)
  • afterRenderComponent com_content (277.03KB) (18.57ms)
  • afterDispatch (2.28KB) (179μs)
  • beforeRenderRawModule mod_finder (Search Module) (1.52MB) (35.02ms)
  • afterRenderRawModule mod_finder (Search Module) (278.92KB) (8.4ms)
  • beforeRenderModule mod_finder (Search Module) (720B) (20μs)
  • afterRenderModule mod_finder (Search Module) (1.28KB) (158μs)
  • afterRender (9.8MB) (1.23s)
  • 1 x afterRender (9.8MB) (90.3%)
    1.23s
    1 x beforeRenderRawModule mod_finder (Search Module) (1.52MB) (2.58%)
    35.02ms
    1 x afterInitialise (809.8KB) (1.87%)
    25.40ms
    1 x afterRenderComponent com_content (277.03KB) (1.37%)
    18.57ms
    1 x afterRoute (544.31KB) (1.32%)
    17.94ms
    1 x After Access::preloadPermissions (com_content) (2MB) (1.04%)
    14.17ms
    1 x afterRenderRawModule mod_finder (Search Module) (278.92KB) (0.62%)
    8.40ms
    1 x afterLoad (458.66KB) (0.37%)
    5.02ms
    1 x beforeRenderComponent com_content (34.19KB) (0.13%)
    1.73ms
    1 x After Access::preloadComponents (all components) (107.34KB) (0.12%)
    1.68ms
    1 x Before Access::preloadComponents (all components) (33.47KB) (0.08%)
    1.14ms
    1 x Before Access::getAssetRules (id:4203 name:com_content.article.3306) (66.65KB) (0.03%)
    348μs
    1 x After Access::getAssetRules (id:4203 name:com_content.article.3306) (8.72KB) (0.02%)
    224μs
    1 x afterDispatch (2.28KB) (0.01%)
    179μs
    1 x afterRenderModule mod_finder (Search Module) (1.28KB) (0.01%)
    158μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.01%)
    134μs
    1 x beforeRenderModule mod_finder (Search Module) (720B) (0%)
    20μs
32 statements were executed, 3 of which were duplicates, 29 unique29.86ms396.05KB
  • SELECT @@SESSION.sql_mode;171μs968B/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:334Copy
  • SELECT `data` FROM `facv2_session` WHERE `session_id` = ?225μs1008BParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:261Copy
  • SELECT `session_id` FROM `facv2_session` WHERE `session_id` = :session_id LIMIT 1176μs1.3KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • INSERT INTO `facv2_session` (`session_id`,`guest`,`time`,`userid`,`username`,`client_id`) VALUES (:session_id, :guest, :time, :user_id, :username, :client_id)1.95ms944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `extension_id` AS `id`,`element` AS `option`,`params`,`enabled` FROM `facv2_extensions` WHERE `type` = 'component' AND `state` = 0 AND `enabled` = 1516μs1.61KB/libraries/src/Component/ComponentHelper.php:399Copy
  • SELECT `id`,`rules` FROM `facv2_viewlevels`184μs656B/libraries/src/Access/Access.php:955Copy
  • SELECT `b`.`id` FROM `facv2_usergroups` AS `a` LEFT JOIN `facv2_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest261μs1.33KBParams/libraries/src/Access/Access.php:868Copy
  • SELECT `folder` AS `type`,`element` AS `name`,`params` AS `params`,`extension_id` AS `id` FROM `facv2_extensions` WHERE `enabled` = 1 AND `type` = 'plugin' AND `state` IN (0,1) AND `access` IN (:preparedArray1,:preparedArray2) ORDER BY `ordering`1.02ms3.48KBParams/libraries/src/Plugin/PluginHelper.php:294Copy
  • SELECT `m`.`id`,`m`.`menutype`,`m`.`title`,`m`.`alias`,`m`.`note`,`m`.`link`,`m`.`type`,`m`.`level`,`m`.`language`,`m`.`browserNav`,`m`.`access`,`m`.`params`,`m`.`home`,`m`.`img`,`m`.`template_style_id`,`m`.`component_id`,`m`.`parent_id`,`m`.`path` AS `route`,`e`.`element` AS `component` FROM `facv2_menu` AS `m` LEFT JOIN `facv2_extensions` AS `e` ON `m`.`component_id` = `e`.`extension_id` WHERE ( (`m`.`published` = 1 AND `m`.`parent_id` > 0 AND `m`.`client_id` = 0) AND (`m`.`publish_up` IS NULL OR `m`.`publish_up` <= :currentDate1)) AND (`m`.`publish_down` IS NULL OR `m`.`publish_down` >= :currentDate2) ORDER BY `m`.`lft`1.65ms133.17KBParams/libraries/src/Menu/SiteMenu.php:166Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `facv2_categories` AS `s` INNER JOIN `facv2_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`940μs3.88KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `id` FROM `facv2_content` WHERE `alias` = :alias AND `catid` = :catid285μs1.34KBParams/components/com_content/src/Service/Router.php:263Copy
  • SELECT `id`,`home`,`template`,`s`.`params`,`inheritable`,`parent` FROM `facv2_template_styles` AS `s` LEFT JOIN `facv2_extensions` AS `e` ON `e`.`element` = `s`.`template` AND `e`.`type` = 'template' AND `e`.`client_id` = `s`.`client_id` WHERE `s`.`client_id` = 0 AND `e`.`enabled` = 1431μs880B/administrator/components/com_templates/src/Model/StyleModel.php:773Copy
  • SELECT s.id, s.template, s.home, s.title AS long_title, s.params FROM facv2_template_styles AS s WHERE s.client_id = 0 AND s.template = 'rt_ambrosia' ORDER BY s.id362μs800B/libraries/gantry5/src/classes/Gantry/Joomla/StyleHelper.php:69Copy
  • SELECT * FROM `facv2_languages` WHERE `published` = 1 ORDER BY `ordering` ASC317μs1.59KB/libraries/src/Language/LanguageHelper.php:142Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `facv2_assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39)988μs7.44KBParams/libraries/src/Access/Access.php:357Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `facv2_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 05.88ms181.48KBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `facv2_content`880μs3.02KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:625Copy
  • UPDATE `facv2_content` SET `hits` = (`hits` + 1) WHERE `id` = '3306'1.35ms48B/libraries/src/Table/Table.php:1325Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `facv2_content` AS `a` INNER JOIN `facv2_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `facv2_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `facv2_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `facv2_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `facv2_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)626μs22.13KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `facv2_categories` AS `s` INNER JOIN `facv2_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`710μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `m`.`tag_id`,`t`.* FROM `facv2_contentitem_tag_map` AS `m` INNER JOIN `facv2_tags` AS `t` ON `m`.`tag_id` = `t`.`id` WHERE `m`.`type_alias` = :contentType AND `m`.`content_item_id` = :id AND `t`.`published` = 1 AND `t`.`access` IN (:preparedArray1,:preparedArray2)393μs3.97KBParams/libraries/src/Helper/TagsHelper.php:388Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `facv2_categories` AS `s` INNER JOIN `facv2_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`737μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM facv2_fields AS a LEFT JOIN `facv2_languages` AS l ON l.lang_code = a.language LEFT JOIN facv2_users AS uc ON uc.id=a.checked_out LEFT JOIN facv2_viewlevels AS ag ON ag.id = a.access LEFT JOIN facv2_users AS ua ON ua.id = a.created_user_id LEFT JOIN facv2_fields_groups AS g ON g.id = a.group_id LEFT JOIN `facv2_fields_categories` AS fc ON fc.field_id = a.id WHERE ( (`a`.`context` = :context AND (`fc`.`category_id` IS NULL OR `fc`.`category_id` IN (:preparedArray1,:preparedArray2,:preparedArray3)) AND `a`.`access` IN (:preparedArray4,:preparedArray5)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray6,:preparedArray7)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC1.33ms4.81KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:166Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `facv2_categories` AS `s` INNER JOIN `facv2_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`680μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `a`.`menutype`,`a`.`title` FROM `facv2_menu_types` AS `a` WHERE `a`.`client_id` = 0243μs608B/libraries/gantry5/src/classes/Gantry/Framework/Menu.php:138Copy
  • SELECT m.id, m.alias, m.path AS route, m.level, m.parent_id FROM facv2_menu AS m WHERE m.menutype = 'mainmenu' AND m.parent_id > 0 AND m.client_id = 0 AND m.published >= 0 ORDER BY m.lft1.03ms1.98KB/libraries/gantry5/src/classes/Gantry/Framework/Menu.php:791Copy
  • SELECT `m`.`id`,`m`.`title`,`m`.`module`,`m`.`position`,`m`.`content`,`m`.`showtitle`,`m`.`params`,`mm`.`menuid` FROM `facv2_modules` AS `m` LEFT JOIN `facv2_modules_menu` AS `mm` ON `mm`.`moduleid` = `m`.`id` LEFT JOIN `facv2_extensions` AS `e` ON `e`.`element` = `m`.`module` AND `e`.`client_id` = `m`.`client_id` WHERE ( ( (`m`.`published` = 1 AND `e`.`enabled` = 1 AND `m`.`client_id` = :clientId AND `m`.`access` IN (:preparedArray1,:preparedArray2)) AND (`m`.`publish_up` IS NULL OR `m`.`publish_up` <= :publishUp)) AND (`m`.`publish_down` IS NULL OR `m`.`publish_down` >= :publishDown)) AND (`mm`.`menuid` = :itemId OR `mm`.`menuid` <= 0) ORDER BY `m`.`position`,`m`.`ordering`955μs1.83KBParams/libraries/src/Cache/Controller/CallbackController.php:51Copy
  • SELECT `name`,`element` FROM `facv2_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1595μs656B/administrator/components/com_finder/src/Helper/LanguageHelper.php:135Copy
  • SELECT `title` FROM `facv2_finder_taxonomy` WHERE `parent_id` = 1 AND `state` = 1 AND `access` IN (1,5)320μs584B/administrator/components/com_finder/src/Indexer/Taxonomy.php:314Copy
  • SELECT SUM(CASE WHEN `a`.`next_execution` <= :now THEN 1 ELSE 0 END) AS due_count,SUM(CASE WHEN `a`.`locked` IS NULL THEN 0 ELSE 1 END) AS locked_count FROM `facv2_scheduler_tasks` AS `a` WHERE `a`.`state` = 1228μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:466Copy
  • SELECT `session_id` FROM `facv2_session` WHERE `session_id` = ?254μs1KBParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:291Copy
  • UPDATE `facv2_session` SET `data` = ? , `time` = ? WHERE `session_id` = ?4.17ms592BParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:318Copy