0
votes

Utilisation d'une colonne spécifique à "Sélectionner * à partir du tableau", mais d'autres colonnes peuvent fonctionner normalement

J'utilise un restriction pour une colonne d'entier spécifique pour faire Sélectionnez * à partir de requête, mais il est toujours momentané sans retourner aucun résultat . Mais lorsque j'utilise d'autres colonnes, la requête fonctionne normalement. Je me demande pourquoi?

Je ne sais pas si c'est parce que la colonne spécifique est entière? xxx

Cela ne fonctionne pas et ne fonctionne pas toujours, mais cette requête fonctionne normalement: xxx


8 commentaires

Peut-être un grand nombre d'enregistrements et aucun index approprié? Essayez d'utiliser Analyzer de requête pour générer le plan d'exécution attendu.


En réalité, il n'y a que 10 000 résultats environ et il n'a pas d'index, car j'utilise le stockage de colonnes.


Montrez-nous le plan ...


@Daleburrell Lorsque j'utilise Ctrl + L pour afficher le plan, il est également mis à jour. Il continue toujours d'exécuter la requête.


N'incluez pas le plan de la requête, utilisez la fonction "Plan d'exécution estimé" qui n'exécute pas la requête.


@Daleburrell dans SQL Server Studio 2018, CTRL + L est l'accès rapide à la fonction "Afficher le plan d'exécution estimé".


Désolé, je ne connais pas les raccourcis clavier.


Qui est étrange que je ne puisse pas modifier ce champ et exécuter 'Supprimer de la table où request_id = 0' requête. Il semble que ce champ soit bloqué


3 Réponses :


0
votes

Le problème peut être associé au plan de requête en cache qui convient à certaines versions de paramètres mais pas pour d'autres. Vous pouvez essayer des mesures pour remédier au problème. Premièrement reconstruire tous les index et assurer que les statistiques sur les non-index sont à jour. Essayez ce qui suit: xxx

si cela ne fonctionne pas, essayez:

  1. Utilisez Optimiser pour
  2. Utilisez avec (recompilez)
  3. peut-être essayer dynamic sql (un lien utile ici )

    Référence ici: Temps de requête SQL Server en fonction de la clause


1 commentaires

Ne fonctionne toujours pas. Qui est étrange que je ne puisse pas modifier ce champ et exécuter 'Supprimer de la table où request_id = 0' requête. Il semble que ce champ soit bloqué.



0
votes

Je soupçonne que request_id sera un type de données de caractères et vous essayez de le comparer contre l'entier. En raison de cela, il doit lancer les données pour chaque rangée et faire une comparaison.

Je vous suggérerais de mettre à jour la requête de cette façon. xxx

aussi, lisez cette solution StackOverflow répond CASTING ENTREGER TO VARCHAR


2 commentaires

Cela ne fonctionne toujours pas, j'ai utilisé '0' au lieu de 0 avant. Mais je vais essayer de changer d'ID de dépôt sur le type de Varcharne.


Qui est étrange que je ne puisse pas modifier ce champ et exécuter 'Supprimer de la table où request_id = 0' requête. Il semble que ce champ soit bloqué



0
votes

Après avoir vérifié s'il est verrouillé par d'autres personnes, toutes les raccordements à ce serveur dort, ce qui signifie que toutes les connexions sont normales. Ensuite, je redémarre le serveur par la gestion de la configuration et il peut interroger normalement. donc la méthode est redémarrer le serveur.


0 commentaires