2017-07-16 1 views
1

Comme le dit le titre, comment puis-je spécifier le type d'index que je veux sur un champ dans un modèle dans django.Comment spécifier le type d'index dans django? (btree vs hash, etc)

class Person: 
    ... 
    age = models.IntegerField(db_index=True) 

Mais maintenant quoi? Comment puis-je m'assurer que c'est un index btree et non un hash. Ou est-ce fait automatiquement pour nous et il y a une grande table que django utilise pour choisir le « type optimal d'index »

+0

django ne marche pas répondre à ce souhait pour vous, cela dépend de votre base de données qui est l'indexation, il a par défaut, l'indexation par défaut est utilisé lorsque vous faites db_index = true dans les modèles – Exprator

+0

@Exprator vous connaissez de toutes les bonnes ressources qui g ive les types d'index par défaut pour chaque type de champ dans mysql? – AlanSTACK

+0

suivez une indexation pour un projet, sinon ce sera un problème, si vous faites une indexation différente pour tous les champs et tables ' – Exprator

Répondre

1

defaults Django à la création btree index chaque fois que vous spécifiez index=True:

https://docs.djangoproject.com/en/1.11/ref/models/indexes/

I notez que vous utilisez MySQL; mais si vous utilisez PostgreSQL, vous pouvez spécifier certains autres types d'index sur certains types de champs:

https://docs.djangoproject.com/en/1.11/ref/contrib/postgres/indexes/

Cette réponse donne des informations sur la façon dont vous pouvez remplacer la valeur par défaut btree dans MySQL, si jamais vous avez besoin :

https://stackoverflow.com/a/3288059/1394697