Индексы для has_many: через

Вы пытаетесь редактировать свои поля на слишком базовом уровне. Список полей, которые вы видите, когда добавляете Google Analytics в качестве источника данных, составляет ВСЕ ГА измерения и метрики. Просто нажмите, чтобы добавить его в качестве источника данных, вы не хотите пытаться редактировать или выбирать ваши измерения и метрики на этом этапе. После подключения источника данных у вас есть все измерения и метрики GA, доступные вам, и вы можете просто выбрать из них то, что вы хотите использовать для каждой таблицы или диаграммы.

7
задан jcnnghm 21 October 2008 в 22:37
поделиться

2 ответа

Взгляды, хорошие мне.

Сгенерированные соединения должны просто быть или на идентификаторах PK таблиц объекта, или на идентификаторах FK в объединяющей таблице - которые являются оба индексами.

Вероятно, было бы хорошо, чтобы посмотреть на сгенерированный ActiveRecord SQL и сравнить его с индексами.

В зависимости от то, какая база данных Вы находитесь на Вас, могло затем прокрутить тот SQL Объяснить план (или независимо от того, что инструмент существует, я думаю Oracle здесь),

Для упрощения кода Вы могли посмотреть на использование has_and_belongs_to_many также. Это позволило бы Вам избавиться от объекта CityPermission (если Вы не хотите использовать это, чтобы хранить данные сам по себе),

4
ответ дан 7 December 2019 в 12:26
поделиться

Вот SQL, для которого генерирует ActiveRecord user.cities:

SELECT `cities`.* FROM `cities` INNER JOIN city_permissions ON (cities.id = city_permissions.city_id) WHERE (city_permissions.user_id = 1 )

ОБЪЯСНИТЕ результаты ниже:

+----+-------------+------------------+--------+---------------------------------------------------------------------+-----------------------------------+---------+-------------------------------------------------+------+-------------+
| id | select_type | table            | type   | possible_keys                                                       | key                               | key_len | ref                                             | rows | Extra       |
+----+-------------+------------------+--------+---------------------------------------------------------------------+-----------------------------------+---------+-------------------------------------------------+------+-------------+
|  1 | SIMPLE      | city_permissions | ref    | index_city_permissions_on_user_id,index_city_permissions_on_city_id | index_city_permissions_on_user_id | 5       | const                                           |    1 | Using where |
|  1 | SIMPLE      | cities           | eq_ref | PRIMARY                                                             | PRIMARY                           | 4       | barhopolis_development.city_permissions.city_id |    1 |             |
+----+-------------+------------------+--------+---------------------------------------------------------------------+-----------------------------------+---------+-------------------------------------------------+------+-------------+

И вот SQL, для которого генерирует ActiveRecord user.city_permissions:

SELECT * FROM `city_permissions` WHERE (`city_permissions`.user_id = 1)

С ОБЪЯСНИТЬ результатами для того запроса:

+----+-------------+------------------+------+-----------------------------------+-----------------------------------+---------+-------+------+-------------+
| id | select_type | table            | type | possible_keys                     | key                               | key_len | ref   | rows | Extra       |
+----+-------------+------------------+------+-----------------------------------+-----------------------------------+---------+-------+------+-------------+
|  1 | SIMPLE      | city_permissions | ref  | index_city_permissions_on_user_id | index_city_permissions_on_user_id | 5       | const |    1 | Using where |
+----+-------------+------------------+------+-----------------------------------+-----------------------------------+---------+-------+------+-------------+

Похож на него, действительно работает правильно. От MySQL Manual:

eq_ref

Одна строка читается из этой таблицы для каждой комбинации строк из предыдущих таблиц. Кроме системы и типов константы, это - самый лучший тип соединения. Это используется, когда все части индекса используются соединением, и индексом является PRIMARY KEY или Уникальный индекс.

касательно

Все строки с соответствием индексным значениям читаются из этой таблицы для каждой комбинации строк из предыдущих таблиц. касательно используется, если соединение использует только крайний левый префикс ключа или если ключом не является PRIMARY KEY или Уникальный индекс (другими словами, если соединение не может выбрать одну строку на основе значения ключа). Если ключ, который используется, соответствует только нескольким строкам, это - хороший тип соединения.

1
ответ дан 7 December 2019 в 12:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: