L'application de la requête a été modifiée, mais la théorie est la même.sybase - showplan réduit grandement les E/S estimées en ajoutant une autre table à la requête
4 tables:
états - liste des états (index sur l'état) magasins - magasins, et l'état où ils sont dans (index séparés sur l'état, magasin) store_orders - TIES un ordre dans un magasin (index séparés sur magasin, commande) order_statuses - a ordre et statut (index séparés sur commande, statut)
Je veux compter combien d'ordres sont dans chaque état pour un état particulier.
Une requête:
select os.order_status, compter (os.order_status) des magasins sto, store_order donc, order_statuses os où sto.state = 'PA' et sto.store = so.store et so.order = os.order groupe par os.order_status
dans l'application réelle, un showplan vient ici de retour avec environ E/S d'environ 500 000
Mais si je fais:
select os.order_status, compter (os.order_status) des Etats sta, sto magasins, store_order donc, order_statuses os où sta.state = 'PA' où sto.state = sta.state et sto.store = so.store et so.order = os.order groupe par os.order_status
le E/S est estimé à environ 2000, et tout ce que je l'ai fait changer la requête était joindre à la table des états à la table des magasins , et spécifiez la valeur exacte dans les états au lieu des magasins.
Le DBM n'aura-t-il pas encore à faire la même recherche de magasins, que je spécifie une valeur explicite ou que je rejoins une autre table avec cette valeur explicite? J'essaie de comprendre pourquoi les E/S estimées sont tellement plus élevées.
Je ne suis pas un administrateur de bases de données, mais j'essaie d'en apprendre le plus possible, parce que je ne cesse de parler de ce genre de choses, et je ne sais jamais pourquoi.
Le showplan donnera les détails de ce qu'il fait qu'ils ne le font pas expliquer pourquoi l'IO diffère? – Mark
Je suis allé à travers les deux showplans, et tous les mêmes index sont utilisés, les tailles de page étaient les mêmes, etc.La seule différence que j'ai vu était la table additionnelle, et l'E/S totale. Le showplan sybase ne montre que les E/S totales, pas les individus d'une table ou d'une autre. –