Внешние ключи индексируются автоматически в SQL Server?

Основной макет вашей работы должен выглядеть следующим образом:

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/navigationDrawer"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include layout="@layout/activity_main_content" />

    <android.support.design.widget.NavigationView
        android:id="@+id/navigationView"
        style="@style/NavigationView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="right"
        app:headerLayout="@layout/header"
        app:menu="@menu/menu_drawer"/>

</android.support.v4.widget.DrawerLayout>

В этом NavigationView я связал header.xml и menu_drawer.xml (из папки меню), например menu_drawer.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
        <group android:checkableBehavior="single">
            <item
                android:id="@+id/nav1"
                android:checked="true"
                android:icon="@drawable/logo"
                android:title="Navigation item 1"/>
            <item
                android:id="@+id/nav2"
                android:icon="@drawable/logo"
                android:title="Navigation item 2"/>
        </group>
    </menu>

, чем ваш java-код:

public class ActivityMain extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        setUpToolbar();
        setUpNavDrawer();
    }

 private void setUpNavDrawer() {
        NavigationView view = (NavigationView) findViewById(R.id.navigationView);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.navigationDrawer);
        view.setNavigationItemSelectedListener(this);
        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.drawerOpen, R.string.drawerClose);
        mDrawerLayout.addDrawerListener(mDrawerToggle);
        mDrawerToggle.syncState();
    }

Проверьте, работает ли это для вас. В моем проекте работает как прелесть.

66
задан Kevin Fairchild 14 November 2008 в 17:51
поделиться

2 ответа

SQL Server автоматически не создаст индекс на внешнем ключе. Также из MSDN:

ограничение FOREIGN KEY А не должно быть связано только с ограничением PRIMARY KEY в другой таблице; это может также быть определено для ссылки на столбцы ограничения UNIQUE в другой таблице. Ограничение FOREIGN KEY может содержать нулевые значения; однако, если какой-либо столбец составного ограничения FOREIGN KEY содержит нулевые значения, проверка всех значений, которые составляют ограничение FOREIGN KEY, пропускается. Чтобы удостовериться, что все значения составного ограничения FOREIGN KEY проверяются, определите NOT NULL на всех участвующих столбцах.

61
ответ дан Charles Bretana 7 November 2019 в 11:16
поделиться

Когда я считал вопрос Mike's, Он спрашивает, создаст ли Ограничение FK индекс на столбце FK в Таблице, FK находится в (Table1). Ответ не, и обычно. (в целях ограничения), нет никакой потребности сделать это, столбец (столбцы), определенный как "ЦЕЛЬ" ограничения, с другой стороны, должен быть уникальным индексом в таблице, на которую ссылаются, или Первичный ключ или альтернативный ключ. (уникальный индекс) или Создать Ограничение statment перестанут работать.

(РЕДАКТИРОВАНИЕ: Добавленный к явно соглашению с комментарием ниже-) А именно, при обеспечении непротиворечивости данных, для которой Ограничение Внешнего ключа там. индекс может влиять на выполнение Ограничения DRI только для, удаляет строки или строк на стороне FK. При использовании ограничения во время вставки или обновления процессор знает значение FK и должен проверить на существование строки в таблице, на которую ссылаются, на Стороне PK. Там уже существует индекс. При удалении строки на стороне PK это должно проверить, что нет никаких строк на стороне FK. Индекс может быть незначительно полезным в этом случае. Но это не общий сценарий.

Кроме этого, в определенных типах запросов, однако, где процессор запросов должен найти, записи на многих примыкают соединения, которое использует тот столбец внешнего ключа. производительность соединения увеличена, когда индекс существует на том внешнем ключе. Но это условие специфично для использования столбца FK в запросе соединения, не к существованию ограничения внешнего ключа... Не имеет значения, является ли другой стороной соединения PK или просто некоторый другой произвольный столбец. Кроме того, если необходимо отфильтровать или заказать результаты запроса на основе того столбца FK, индекс поможет... Снова, это не имеет никакого отношения к ограничению Внешнего ключа на тот столбец.

23
ответ дан Charles Bretana 7 November 2019 в 11:16
поделиться
Другие вопросы по тегам:

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